MySqlCommand Command.Parameters.Add已过时

我正在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)";

以上是 MySqlCommand Command.Parameters.Add已过时 的全部内容, 来源链接: utcz.com/qa/407968.html

回到顶部