C# 在 MySQL 中插入多个变量

本文关键字:变量 插入 MySQL | 更新日期: 2023-09-27 18:28:38

你好,这一切似乎是我的问题我在 mysql 中有一个表,并且在尝试插入时正在制作一个 c# 应用程序,我得到一个 您的 SQL 语法有错误;检查与您的MySQL服务器版本相对应的手册,了解在第1行的"OIL COMPANY("附近使用的正确语法,即My CompanyVal。它将插入一个值和一个默认值,但我会添加第二个值,它出错了

        string ConnectionString2 = ConfigurationSettings.AppSettings["ConnectionString2"];
        MySqlConnection connection2;
        connection2 = new MySqlConnection(ConnectionString2);
        connection2.Open();
        MySqlCommand command = new MySqlCommand("INSERT INTO spt_proposal     (lab_Prop_Id,customer_Name) VALUE (" + a + "," + companyVal + ")", connection2);
        command.ExecuteNonQuery();
        connection2.Close();

布伦特

C# 在 MySQL 中插入多个变量

不要这样做:

// I split the line
MySqlCommand command =
    new MySqlCommand("INSERT INTO spt_proposal lab_Prop_Id,customer_Name) "
        "VALUE (" + a + "," + companyVal + ")", connection2);

这会使您面临SQL注入攻击,并且通过混合代码和数据使您的代码更难理解,并导致转换的潜在问题(特别是日期和时间(。

相反,请使用参数化 SQL 语句将值提供给数据库。

虽然您可以只添加引号,但您绝对不应该这样做。错误数据(无论是故意恶意还是在变量ab中都可能构成严重的安全风险。只是不要这样做。

还需要VALUE更改为 VALUES ,但我只会在移动到参数化 SQL 才这样做。哦,使用 using 语句自动释放命令和连接,这样就不会在引发异常时泄漏资源。

您的字符串周围缺少引号,应该VALUE VALUES

string sql = "INSERT ... VALUES ('" + a + "','" + companyVal + "')";

此外,我建议您使用参数化查询。

在这里猜测,该列customer_Name字符串/文本列吗?我对mySQL没有太多经验,但是对于SQL Server字符串,总是必须用勾号('(括起来。所以这样的事情可能会起作用:

INSERT INTO spt_proposal     (lab_Prop_Id,customer_Name) VALUE (" + a + ",'" + companyVal + "')", connection2);

然而,这通常被认为是"糟糕的形式",一个稍微好的选择是使用String.Format,甚至(更(更好的是参数化的SQL。

更改要参数化的command文本:

var commandText = "INSERT INTO spt_proposal(lab_Prop_Id,customer_Name)" +
  " VALUES(?lab, ?cust)";
var command = new MySqlCommand(commandText, connection2);
command.Parameters.Add("?lab", MySqlDbType.VarChar, 80).Value = a;
command.Parameters.Add("?cust", MySqlDbType.VarChar, 80).Value = companyVal;
command.ExecuteNonQuery();

我做了一个疯狂的假设,即字段类型是 varchar(80(,哈哈......