繁体   English   中英

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

[英]How to show data from remote MySQL database in a MessageBox in C#

我是C#的新手,我目前正试图连接到远程SQL Server,该服务器将仅显示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";

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

如果连接正常工作,则问题可能在于,许可证键是TEXT字段,并且字符串必须在撇号内(例如c ++字符串):

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

尝试这个:

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);

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

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

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

对于真正的代码,我确定已经有一个SQLCommand ,并且已经在使用它了, SQLParameter https://msdn.microsoft.com/zh-cn/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并允许他们登录到您的系统:(

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM