当前位置: 首页 > 面试题库 >

MySqlCommand Command.Parameters.Add已过时

宇文勇
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 在《有效的Java》一书中,乔希·布洛赫(Josh Bloch)说 StringBuffer在很大程度上已经过时,应该由非同步的实现’StringBuilder’代替 。 但是根据我的经验,我仍然看到StringBuffer类的广泛使用。为什么StringBuffer类现在已过时,为什么除了由于非同步而提高了性能之外,为什么StringBuilder比StringBuffer更受青睐?

  • 问题内容: 当尝试使用ExpectedConditions显式等待某个元素变得可见时,Visual Studio警告我该元素现在已过时,将很快从Selenium中删除。 实现相同结果的当前/新方法是什么? 问题答案: 我解决了自己的问题,并想为其他任何想知道如何使用最新版本的Selenium解决此问题的人提供答案。 使用nuget搜索DotNetSeleniumExtras.WaitHelpers

  • 使用Android Studio 3.3金丝雀11和gradle插件版本。它在尝试同步gradle时抛出以下错误 单击该错误会导致我找到gradle文件中的这一行 我到底需要改变什么? 项目 Appbuild.gradle 我在app/build中跳过了一些常量和其他敏感信息。格雷德尔档案。

  • 我从堆栈跟踪中找不到谁在调用 Android Studio版本:3.4 Gradle版本5.1.1

  • 问题内容: 我正在尝试将一个大型Django项目部署到heroku。我安装了Heroku CLI,登录,创建了一个应用程序并运行: 我已经设置了一个Pipfile和requirements.txt。我添加了runtime.txt以指定需要python 2.7。这也在Pipfile中。这是我从推送到heroku得到的结果: 由于某种原因,它尝试安装python 3,而且它也不喜欢我的Pipfile.

  • andutils 是 Android 的常用工具类. 1. 日志工具类: 即使过去logcat中的日志信息(通过当前app的pid进行日志筛选,日志可分等级过滤),当日志保存到一定大小会发送到指定的邮箱。 2. 汉字转换拼音工具类:可以把汉字转换成拼音方便模糊查询,此工具类来自android的通讯录源码中。 3. android发送邮件工具类(整个开源项目 http://code.google.c