这是我用来将值插入数据库的代码。
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。
从您的评论中,您提到该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] 删除。
我来说两句