Как установить up.net соединение teradata в C#?

Я пытаюсь подключиться к Teradata с помощью c#. Я использую пример кода из этот сайт

using System;
using System.Collections.Generic;
using System.Text;
using Teradata.Client.Provider;

namespace Teradata.Client.Provider.HelloWorld
{
    class HelloWorld
    {
        static void Main(string[] args)
        {
            using (TdConnection cn = new TdConnection("Data Source = x;User ID = y;Password = z;"))
            {
                cn.Open();
                TdCommand cmd = cn.CreateCommand();
                cmd.CommandText = "SELECT DATE";
                using (TdDataReader reader = cmd.ExecuteReader())
                {
                    reader.Read();
                    DateTime date = reader.GetDate(0);
                    Console.WriteLine("Teradata Database DATE is {0}", date);
                 }
             }
         }
    }
}

(Я также пробовал DSN , UID , PWD Однако я получаю исключение, что либо мой userid, учетная запись или пароль неверны ... Но я могу легко войти в систему с помощью SQL Assistant. Итак, я исключаю неверный идентификатор пользователя или пароль

здесь я нашел возможное решение моей проблемы Но я не знаю, что именно мне нужно чтобы изменить мой пример кода.

Так, я понятия не имею, как реализовать это решение.

может кто-нибудь дать мне рабочий пример кода?

4 ответов


на основе ссылки, которую вы опубликовали, может работать изменение механизма аутентификации на LDAP.

TdConnectionStringBuilder connectionStringBuilder = new TdConnectionStringBuilder();
connectionStringBuilder.DataSource = "x";
connectionStringBuilder.Database = "DATABASENAME";
connectionStringBuilder.UserId = "y";
connectionStringBuilder.Password = "z";
connectionStringBuilder.AuthenticationMechanism = "LDAP";

using (TdConnection cn = new TdConnection())
{
    cn.ConnectionString = connectionStringBuilder.ConnectionString;
    cn.Open();

    TdCommand cmd = cn.CreateCommand();
    cmd.CommandText = "SELECT DATE";

    using (TdDataReader reader = cmd.ExecuteReader())
    {
        reader.Read();
        DateTime date = reader.GetDate(0);
        Console.WriteLine("Teradata Database DATE is {0}", date);
    }
}

попробуйте это. попробуйте увидеть, если вы получите что-нибудь в строке 'tt'. Plz измените запрос DBCommand на любой релевантный.

    public readonly String sUser = "UserName";
    public readonly String sPassword = "Password";
    public readonly String sDataSource = "IP Address"; 
    public readonly String sConnection = "Data Source=" + sDataSource + ";User ID=" + sUser + ";Password=" + sPassword;


        DbProviderFactory pf = DbProviderFactories.GetFactory("Teradata.Client.Provider");
        DbConnection con = pf.CreateConnection();
        con.ConnectionString = sConnection ;       
        DbCommand cmd= new DbCommand("select top 10 * from tdb.access_method");
        DbCommand Db = (DbCommand)cmd;
        Db.Connection = con;
        DataSet ds = new DataSet();
        con.Open();
        string tt = (string)Db.ExecuteScalar();

попробуй такое

                TdConnectionStringBuilder builder=new TdConnectionStringBuilder();
                builder.Add("Data Source", "xxx");
                builder.Add("User ID", "vvv");
                builder.Add("Password", "bbb");
                TdConnection cn = new TdConnection(builder.ConnectionString);
                cn.Open();

копировать вставить это.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Teradata.Client.Provider;

namespace Teradata.Client.Provider.ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

            TdConnection cn = new TdConnection();
            TdConnectionStringBuilder conStrBuilder = new TdConnectionStringBuilder();

            conStrBuilder.DataSource = "DSN";
            // conStrBuilder.Database = "optional";

            conStrBuilder.UserId = "user"; conStrBuilder.Password = "pass";
            cn.ConnectionString = conStrBuilder.ConnectionString;

            cn.Open();

            Console.WriteLine("connection successfull");
        }
    }
}