我正在Visual Studio 2010中制作一个C#Windows Form应用程序。
该应用程序正在连接到mysql数据库,我想在其中插入数据。
现在我有这部分代码了:
MySqlConnection connection; string cs = @"server=server ip;userid=username;password=userpass;database=databse"; connection = new MySqlConnection(cs); connection.Open();
MySqlCommand command = new MySqlCommand(); string SQL = "INSERT INTO twMCUserDB
(mc_userName
, mc_userPass
, tw_userName
, tw_userPass
) VALUES ('@mcUserName', '@mcUserPass', '@twUserName', '@twUserPass')"; command.CommandText = SQL; command.Parameters.Add("@mcUserName", mcUserNameNew); command.Parameters.Add("@mcUserPass", mcUserPassNew); command.Parameters.Add("@twUserName", twUserNameNew); command.Parameters.Add("@twUserPass", twUserPassNew); command.Connection = connection; command.ExecuteNonQuery(); connection.Close(); 连接很好。那个有效。
我在这里读到,现在的方式是执行查询的一种保存方式。这样还对吗?
现在是真正的问题。通过上面的代码,我在Visual Studio中收到以下警告:
'MySql.Data.MySqlClient.MySqlParameterCollection.Add(string, object)' is obsolete: '"Add(String parameterName, Object value) has been deprecated. Use AddWithValue(String parameterName, Object value)"' 该警告适用于每个参数。
而且它甚至都不起作用,因为插入的值是@ mcUserName,@ mcUserPass等,而不是变量mcUserNameNew等所保存的值...
所以我的问题是,我做错什么了吗,SQL注入保存查询的新方法是什么?
尝试 AddWithValue
command.Parameters.AddWithValue("@mcUserName", mcUserNameNew); command.Parameters.AddWithValue("@mcUserPass", mcUserPassNew); command.Parameters.AddWithValue("@twUserName", twUserNameNew); command.Parameters.AddWithValue("@twUserPass", twUserPassNew); 并且不要将占位符用单引号引起来。
string SQL = "INSERT INTO twMCUserDB
(mc_userName
, mc_userPass
, tw_userName
, tw_userPass
) VALUES (@mcUserName, @mcUserPass, @twUserName, @twUserPass)";来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。