嘿,我正在尝试创建一个登录页面,用于检查服务器上数据库的用户名和密码。该服务器位于其他国家/地区。
这是我到目前为止的代码:
#region Building the connection string
string Server = "XX.XXX.XX.XX, XXXX";
string Username = "_Username_";
string Password = "_Password_";
string Database = "_Database_";
string ConnectionString = "Data Source=" + Server + ";";
ConnectionString += "User ID=" + Username + ";";
ConnectionString += "Password=" + Password + ";";
ConnectionString += "Initial Catalog=" + Database;
#endregion
SqlConnection SQLConnection = new SqlConnection();
try
{
SQLConnection.ConnectionString = ConnectionString;
SQLConnection.Open();
// You can get the server version
// SQLConnection.ServerVersion
}
catch (Exception Ex)
{
// Try to close the connection
if (SQLConnection != null)
SQLConnection.Dispose();
// Create a (useful) error message
string ErrorMessage = "A error occurred while trying to connect to the server.";
ErrorMessage += Environment.NewLine;
ErrorMessage += Environment.NewLine;
ErrorMessage += Ex.Message;
// Show error message (this = the parent Form object)
MessageBox.Show(this, ErrorMessage, "Connection error", MessageBoxButtons.OK, MessageBoxIcon.Error);
// Stop here
return;
}
我收到错误消息:
需要非负数。 参数名称:count
我已经在我的服务器上接受了通配符,我不知道该错误意味着什么? 任何帮助将不胜感激,
感谢。
答案 0 :(得分:1)
您需要在连接字符串中的服务器名称周围加上引号。
但是,您应该使用SqlConnectionStringBuilder
,例如:
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = Server;
builder.UserID = Username;
builder.Password = Password;
builder.InitialCatalog = Database;
SqlConnection SQLConnection = new SqlConnection(builder.ToString());
try {
SQLConnection.Open();
...
} finally {
SQLConnection.Close();
}
此外,您应该在finally
块中关闭连接。
答案 1 :(得分:0)
首先尝试使用真正的连接字符串 - 使用SSMS对数据库进行测试,然后创建自己的连接字符串。一旦第一个工作,第二个应该工作(确保它们是相同的)
从来没有将客户端的输入连接到SQL语句中(我知道这是一个连接字符串...但是使用输入而不检查非法字符/注入是一个坏主意,所以在代码中更进一步 - 确保你没有不这样做。
答案 2 :(得分:0)
为什么数据访问代码中有messagebox.show?
非常糟糕的做法。
可以在这里找到有效的连接字符串
http://www.connectionstrings.com/
也使用连接字符串构建器 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx
我猜测你的连接字符串是无效的,所以它在计算它的参数时失败了...但我真的猜测那里。
你的连接字符串不会改变,所以id将它放在app.config ro web.config
中如果添加数据源,它将构造连接字符串并将该项添加到web.config中。
答案 3 :(得分:0)
SqlConnectionStringBuilder
或
将连接字符串放在app.config文件中
或
尝试用分号(;)终止连接字符串 - 这只是一个疯狂的猜测
string ConnectionString = "Data Source=" + Server + ";";
ConnectionString += "User ID=" + Username + ";";
ConnectionString += "Password=" + Password + ";";
ConnectionString += "Initial Catalog=" + Database + ";";
PS: - 请注意John Nicholas在数据访问代码中对MessageBox
所说的内容。如果您是初学者,那么请尽早开发出良好的编码实践。当您毕业时编写更复杂的应用程序时,它将极大地帮助您。
答案 4 :(得分:0)
我遇到同样的问题,我在网上找不到任何建议似乎都有用。
在我的笔记本电脑(Win7)上我可以安装MySQL连接器,只需在Visual Studio中添加一个引用并添加“using MySql.Data.Client;”或者代码之上的东西。现在我尝试在我的桌面(WinXP)上执行相同的操作,并且参考列表中没有任何内容。谷歌搜索了一段时间后,我找到了一个新的bèta版本的MySQL连接器的模糊链接,它似乎安装在C#中。您不必再添加引用,只需使用“using System.Data.SqlClient;”。
当我使用它并正确设置一切时,它仍然给我这个错误。查看Wireshark,除了倒数第二个字符串中的一个字符串外,所有数据包都是不可读的:“数据包乱序”。 我怀疑MySQL客户端与我的MySQL服务器版本不兼容。毕竟客户端的安装版本是bèta,我的MySQL服务器不是最新版本。我不打算尝试这个理论,经过几个小时的努力,我很喜欢 - 我会用我的笔记本电脑。
很抱歉,这个回复无法解决,但我发帖是希望我可以指出某人正确的方向。