c# - 将字符串转换为 sql 查询
问题描述
我有一个接收四个字符串的方法,应该将它们插入到我的数据库表中。不幸的是,该表只接收值“nameIncoming”、“versionIncoming”、“publisherIncoming”、“installDateIncoming”而不是字符串的内容。
//Insert statement
public void Insert(string nameIncoming, string versionIncoming, string publisherIncoming, string installDateIncoming)
{
string query = "insert into Michael_Workstation(name, version, publisher, installDate) values('nameIncoming', 'versionIncoming', 'publisherIncoming', 'installDateIncoming')";
....
}
我想我需要以某种方式转换字符串。我已经尝试了不同的东西,但似乎没有任何效果。
解决方案
您已将这些列的值显式设置为变量的名称,而不是设置这些变量的值。
单引号内的任何文本values('nameIncoming', 'versionIncoming', 'publisherIncoming', 'installDateIncoming')";
都被视为一个值,而不是一个变量。
在这种情况下,最好为查询使用参数化值。这可确保您将变量的值直接设置为命名列。
对于 MySQL,它看起来像这样:
MySqlCommand insertSQL = new MySqlCommand("INSERT INTO Michael_Workstation(name, version, publisher, installDate) VALUES (@name, @version, @publisher, @installDate)";
然后,要设置列的值,您可以像这样添加每个:
insertSQL.Parameters.AddWithValue("@name", nameIncoming);
推荐阅读
- assembly - 为什么我在这个程序集打印功能中出现分段错误
- java - 用 Java 创建可视化工作流用户界面
- javascript - 反应严格模式
- flutter - 有没有办法在flutter web中将复制的图像复制到剪贴板
- jenkins - Catch Yarn 退出代码 1
- sql-server - 使用 SQL 创建 SCD 类型 2
- java - 用于处理需要限时释放的队列上的消息的优先队列
- sql - 用一行而不是几行表示数据
- c++ - Outlook 加载项无法写入注册表位置 HKEY_LOCAL_MACHINE\\SOFTWARE
- wpf - 如何在 WPF DataGrid 中添加带有文本框的行以用作搜索框