我正在尝试用c#连接到Teradata。我正在使用这个网站的样本代码
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
然而,我遇到了一个异常,我的用户ID、帐户或密码不正确。。。但我可以使用SQL助手轻松登录。因此,我排除了不正确的用户ID或密码
在这里,我找到了解决我问题的可能办法但我不知道我的示例代码中到底需要更改什么。
因此,我不知道如何实现该解决方案。
有人能给我一个工作示例代码吗?
根据您发布的链接,将身份验证机制更改为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");
}
}
}