远程SQL登录页面C#

远程SQL登录页面C#,c#,sql,login,C#,Sql,Login,嘿,我正在尝试创建一个登录页面,用服务器上的数据库检查用户名和密码。服务器位于其他国家/地区 这是我目前掌握的代码: #region Building the connection string string Server = "XX.XXX.XX.XX, XXXX"; string Username = "_Username_"; string Password = "_Password_";

嘿,我正在尝试创建一个登录页面,用服务器上的数据库检查用户名和密码。服务器位于其他国家/地区

这是我目前掌握的代码:

    #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

我已经在我的服务器上接受了通配符,我不知道那个错误意味着什么? 任何帮助都将不胜感激


谢谢。

首先尝试使用一个真正的连接字符串-这是通过SSM对DB进行测试的,然后创建自己的连接字符串。第一个工作后,第二个工作(确保它们相同)


永远不要将来自客户端的输入连接到SQL语句中(我知道这是一个连接字符串…但使用输入时不检查非法字符/注入是一个坏主意,所以在代码的后面-确保不这样做)。

为什么在数据访问代码中有messagebox.show

这真的很糟糕,老兄

可以在此处找到有效的连接字符串

还可以使用connectionstring生成器

我猜你的连接字符串是无效的,因此它无法计算其参数。。。但我真的在猜测

您的连接字符串不会更改,因此我会将其放在app.config ro web.config中


另外,如果添加数据源,它将构造连接字符串并将该项添加到web.config中。

最佳选项用户
SqlConnectionStringBuilder
,如

将连接字符串放入app.config文件中

尝试用分号(;)终止连接字符串——这只是一个猜测

  string ConnectionString = "Data Source=" + Server + ";";
  ConnectionString += "User ID=" + Username + ";";
  ConnectionString += "Password=" + Password + ";";
  ConnectionString += "Initial Catalog=" + Database + ";";

PS:-请注意数据访问代码中有关
MessageBox
的内容。如果你是一个初学者,那么在早期尝试开发好的编码实践。它将极大地帮助您毕业后编写更复杂的应用程序。

您需要在连接字符串中的服务器名称周围加引号

但是,您应该改用,如下所示:

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
块中关闭连接。

我也有同样的问题,我在网上找到的建议似乎都不起作用

在我的笔记本电脑(Win7)上,我可以安装MySQL连接器,只需在VisualStudio中添加一个引用,并在代码顶部添加“usingmysql.Data.Client;”或其他内容。现在我试着在我的桌面(WinXP)上做同样的事情,但是在引用列表中没有显示任何内容。在谷歌搜索了一段时间后,我发现了一个指向MySQL连接器新bèta版本的模糊链接,它似乎安装到了C#中。您不必再添加引用,只需使用“using System.Data.SqlClient;”

当我使用它并正确设置一切时,它仍然会给我这个错误。查看Wireshark,除了倒数第二个字符串中的一个字符串:“数据包无序”外,所有数据包都无法读取。 我怀疑MySQL客户端与我的MySQL服务器版本不兼容。客户机的安装版本毕竟是bèta版本,而我的MySQL服务器不是最新版本。我不打算尝试这个理论,在尝试了几个小时后,我很想-该死,我会用我的笔记本电脑


很抱歉,此回复无法解决此问题,但我发布此回复是希望我能为某人指出正确的方向。

当您逐步完成时,哪一行引发异常?您应该使用
SqlConnectionStringBuilder
。异常的堆栈跟踪是什么?它会在SQLConnection.Open()处引发;我正在尝试添加数据源,但当我在“添加连接”中填写完所有信息后,当我单击“测试连接”时,会出现相同的错误?如果您有正确的ip和端口以及正确的用户名和密码。。。我想问题出在数据库配置中。您确定它是sql server数据库吗?我的观点是,我不再认为这是编程问题。我尝试了这个方法,但仍然得到相同的消息,它被抛出到“SQLConnection.Open();”请向我们显示异常的完整堆栈跟踪。您可以使用Visual Studio的UI或SSM连接到服务器吗?当我尝试添加数据源时,如果您的意思是这样的话,我在尝试测试连接时会收到相同的错误消息?什么是SSMS?对于我正在使用的数据源“我的服务器ip,服务器端口”,是否正确?SSMS是SQL server Management Studio。您的数据源错误。我尝试了SqlConnectionStringBuilder,但仍然无效,给出了相同的消息