我很难使用.NET连接字符串连接到SQL Anywhere 12数据库。
我使用以下查询字符串:
Data Source=xxx.xxx.xxx.xxx,yyyy; Initial Catalog={MyDatabaseName}; User ID={MyUsername}; Password={MyPassword}
(其中xxx.xxx.xxx.xxx =远程服务器的IP地址,yyyy是必需的端口)
我尝试使用以下代码运行此操作来测试我的连接:
private const string connectionString = "{MyQueryString}";
private const string testQuery = "{ATestSelectQuery}";
using (SqlConnection conn = new SqlConnection(connectionString))
{
ExecuteNonQuery(conn, testQuery);
}
static void ExecuteNonQuery(SqlConnection conn, string query)
{
try
{
using (SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.CommandText = query;
cmd.CommandType = CommandType.Text;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
catch (Exception ex)
{
Console.WriteLine("ERROR: {0}", ex.Message);
}
}
但是,当我运行此操作时,我收到以下错误:
错误:已成功与服务器建立连接,但是 然后在登录前握手期间发生错误。 (提供者:TCP 提供者,错误:0 - 现有连接被强制关闭 远程主机。)
答案 0 :(得分:1)
您的代码看起来像是在尝试连接到Microsoft SQL Server而不是SQLAnywhere 12服务器。 SqlConnection,SqlCommand等仅适用于Microsoft SQL Server。 SQLAnywhere 12的.NET客户端对象是SAConnection,SACommand等。
您需要确保安装了正确的SQLAnywhere .NET客户端文件。如果您不确定或不确定,请下载SQL Anywhere Developer Edition。这是免费的。客户端版本12-17将连接到您的版本12服务器。请注意,SQLAnywhere的连接字符串与MS SQL Server的连接字符串非常不同。