如何在C#中的MessageBox中显示来自远程MySQL数据库的数据

时间:2017-10-26 21:58:17

标签: c# mysql sql

我是C#的新手,我目前只是尝试连接到远程SQL服务器,然后只需显示许可证密钥来自licensekeys表,如果它与textBox1中的许可证密钥匹配,则显示在MessageBox中所有这一切都来自点击按钮。 (所以基本上就像用户名和密码登录,除了我只想用许可证密钥登录)

我现在所拥有的:

SqlConnection connect = new SqlConnection("Data Source= MYSERVERIPHERE\\MSSQLSERVER2008;Initial Catalog=MYDB;User ID=MYUSERID;Password=MYPASSWORD");
            SqlCommand = "SELECT licensekey FROM licensekeys WHERE licensekey = textBox1.Text";

不知道该怎么办,如果有人可以指导我,欢呼,我会很感激。

3 个答案:

答案 0 :(得分:0)

如果连接工作不正常,问题可能是lisence键是TEXT字段,字符串需要在撇号内(c ++字符串作为示例):

SqlCommand = "SELECT licensekey FROM licensekeys WHERE licensekey = '" + 
textBox1.Text + "'";

答案 1 :(得分:0)

试试这个:

SqlConnection connect = new SqlConnection("Data Source= MYSERVERIPHERE\\MSSQLSERVER2008;Initial Catalog=MYDB;User ID=MYUSERID;Password=MYPASSWORD");

SqlCommand = string.Format("SELECT licensekey FROM licensekeys WHERE licensekey = {0}" , textBox1.Text);

我假设连接字符串是正确的,并且可以真正连接到远程服务器

答案 2 :(得分:0)

等待......在您将答案复制并粘贴到代码文件之前,请注意有一个名为SQL注入的漏洞!!

对于C#中的MySQL连接字符串,您可以搜索它,或使用由MySQL团队或社区开发的SQL连接器 https://www.connectionstrings.com/mysql/,这是从中提取的示例: Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

对于真实代码,我确信您已经使用了SQLCommandSQLParameter 要使用https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter(v=vs.110).aspx,它可以帮助您防止SQL注入

示例:(假设使用SqlConnection适用于MySQL,不确定;如果不起作用,请使用MySQL连接器,并阅读相应的文档)

var command = connect.CreateCommand();
command.CommandText = "SELECT licensekey FROM licensekeys WHERE licensekey = @license";
var license = new SQLParameter("@license", SqlDbType.Char) // let's assume the license only contains ASCII.
{
    Value = textBox1.Text
};
command.Parameters.Add(license);
command.ExecuteScalar(); // or command.ExecuteScalarAsync();, assuming you only want 1 row of record.

您永远不会想要拥有许可证密钥abc OR 1=1的人并允许他们登录您的系统:(