【发布时间】:2017-10-02 10:47:49
【问题描述】:
案例:我正在尝试在 C# 中使用 MySql.Data.MySqlClient 执行一个查询,其中包含 INSERT INTO,我收到一个错误(见下文):
数据库表:
我想要实现的目标:我想插入一条新记录:“value_id(Auto Increment)”、“machine_id”、“tag_name”、“int_value”、“real_value”和“bool_value”;
我有以下代码:
*检索机器ID
private void getMachineID()
{
string connStr = "";
string ipAdressID = "'" + machineIP + "'";
string basicQueryID = "SELECT machine_id FROM machine WHERE machine.machine_ip LIKE ";
string totalQueryID = basicQueryID + ipAdressID;
//Create connection
MySqlConnection conn = new MySqlConnection(connStr);
//Query command
MySqlCommand cmd = conn.CreateCommand();
//Assign string to query
cmd.CommandText = totalQueryID;
//Open connection
conn.Open();
//Get result ID from machine where IP adress = machineIP and write to machineID variable.
machineID = (int)(cmd.ExecuteScalar());
}
要插入记录的代码:
try
{
string connStr = "";
MySqlConnection conn = new MySqlConnection(connStr);
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO waardes(machine_id, tag_name, int_value, real_value, bool_value) VALUES(@machineID, @tagName, @intValue, @doubleValue, @boolValue)";
cmd.Parameters.AddWithValue("@tagName", tagName);
cmd.Parameters.AddWithValue("@intValue", intValue);
cmd.Parameters.AddWithValue("@doubleValue", doubleValue);
cmd.Parameters.AddWithValue("@boolValue", boolValue);
cmd.Parameters.AddWithValue("@machineID", machineID);
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
希望大家帮忙!
【问题讨论】:
-
那么问题出在哪里?为什么需要
Where来代替insert?你的意思是更新吗? -
是
INSERT INTO .... FROM ... WHERE x = z吗? -
AFAIK 如果要使用条件更新现有记录,则需要使用
UPDATE查询,即WHERE子句。 -
@RahulHendawe ahhh .. OP 想要更新记录 o_O