首页 > 解决方案 > 将字符串转换为 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')";

       ....

        }

我想我需要以某种方式转换字符串。我已经尝试了不同的东西,但似乎没有任何效果。

标签: c#mysqlstringcasting

解决方案


您已将这些列的值显式设置为变量的名称,而不是设置这些变量的值。

单引号内的任何文本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);

推荐阅读