尝试将C#中的变量插入MySQL时出错

阿尔文

这是我用来将值插入数据库的代码。

public void callSQL(string partNumber, string total, string numOfPacks, string dunsNumber,   string serialNumber, string laneNumber)

    {

 MySqlConnection myConnection = new MySqlConnection("SERVER=localhost;DATABASE=testing;UID=root;PASSWORD=********;");

        try
        {
            myConnection.Open();
            Console.WriteLine(laneNumber);
            MySqlCommand myCommand = new MySqlCommand("INSERT INTO test (Part_Number, total, number_of_packs, dunsNumber, serialNumber, truck_number) VALUES (" + partNumber +","+total+","+numOfPacks+","+dunsNumber+","+serialNumber+","+laneNumber+")", myConnection);
            myCommand.ExecuteNonQuery();
            Console.Write("Done");
            myConnection.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }
    }

这真的很奇怪。我遇到的问题是laneNumber变量。这是我从控制台读取的字符串。

 Console.WriteLine("Please enter the date and lane number like so: ddmmyylanenumber.");
        string lanenum = Console.ReadLine();

但是,只有全部为数字时,才将其输入数据库。当其中有一个字符时,我无法将任何内容输入数据库。当我手动将变量更改为字符串时,此方法有效,但是当我将变量与内部字符一起使用时,则无效。我得到的错误是这样的:

“ MySQL.Data.MySqlClient.MySqlExectipn(0x8004005):“字段列表”中的未知列“ whatever_i_entered_into_console”

编译器抱怨的myCommand.ExectueNonQuery();是该行。

希望这是足够的信息。我在这里先向您的帮助表示感谢。

EDIT truck_number是一个VARCHAR。

苏达卡·蒂拉普迪(Sudhakar Tillapudi)

从您的评论中,您提到该truck_number列是一种VARCHAR类型。

问题:您没有将字符串值lane_number括在单引号中。

解决方案:您需要将VARCHAR类型的字符串值括在单引号中,以正确发送它们:

试试这个:(我不建议这样做)

MySqlCommand myCommand = new MySqlCommand("INSERT INTO test (Part_Number, total, number_of_packs, dunsNumber, serialNumber, truck_number) VALUES (" + partNumber +","+total+","+numOfPacks+","+dunsNumber+","+serialNumber+",'"+laneNumber+"')", myConnection);

建议:您的INSERT INTO陈述是开放的SQL Injection Attacks因此,我建议您使用Parameterised queries以避免它们。

当您使用parameterised queries各自的类型时,将正确发送,因此在发送字符串值时甚至不需要使用单引号。

使用参数化查询:

MySqlCommand myCommand = new MySqlCommand("INSERT INTO test (Part_Number, total, number_of_packs, dunsNumber, serialNumber, truck_number) VALUES (@Part_Number,@total,@number_of_packs,@dunsNumber,@serialNumber,@truck_number)", myConnection);
myCommand.Parameters.AddWithValue("@Part_Number",partNumber);
myCommand.Parameters.AddWithValue("@total",total);
myCommand.Parameters.AddWithValue("@number_of_packs",numOfPacks);
myCommand.Parameters.AddWithValue("@dunsNumber",dunsNumber);
myCommand.Parameters.AddWithValue("@serialNumber",serialNumber);
myCommand.Parameters.AddWithValue("@truck_number",laneNumber);
myCommand.ExecuteNonQuery();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章