MySqlCommand Command.Parameters.Add已过时

Mat*_*ght 22 c# mysql parameters sqlcommand deprecated

我在visual studio 2010中制作了一个C#windows Form Application.

该应用程序连接到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();
Run Code Online (Sandbox Code Playgroud)

连接很好.这样可行.

在这里强调,我现在的方式是进行查询的保存方式.这还不错吗?

而现在到了真正的问题.使用上面的代码,我在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)"'
Run Code Online (Sandbox Code Playgroud)

该警告适用于每个parameters.add

它甚至不起作用,因为插入的值是@mcUserName,@ mcUserPass等等,而不是变量mcUserNameNew等所持有的值......

所以我的问题是,我做错了什么,以及sql注入的新方法保存查询?

Joh*_*Woo 29

尝试 AddWithValue

command.Parameters.AddWithValue("@mcUserName", mcUserNameNew);
command.Parameters.AddWithValue("@mcUserPass", mcUserPassNew);
command.Parameters.AddWithValue("@twUserName", twUserNameNew);
command.Parameters.AddWithValue("@twUserPass", twUserPassNew);
Run Code Online (Sandbox Code Playgroud)

并且不要用单引号包装占位符.

string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES (@mcUserName, @mcUserPass, @twUserName, @twUserPass)";
Run Code Online (Sandbox Code Playgroud)

  • 并且不要用单引号包装值.看到我的更新 (3认同)