C# 插入到带有where子句的查询中

C# 插入到带有where子句的查询中,c#,mysql,C#,Mysql,案例:我正在尝试使用MySql.Data.MySqlClient在C中执行一个查询,其中包含INSERT INTO,我得到一个错误,请参见以下内容: 数据库表: 我想实现的是:我想插入一个新的记录:value_id自动递增,machine_id tag_name,int_值,real_值和bool_值 我有以下代码: *检索计算机ID private void getMachineID() { string connStr = ""; string ipAdressID =

案例:我正在尝试使用MySql.Data.MySqlClient在C中执行一个查询,其中包含INSERT INTO,我得到一个错误,请参见以下内容:

数据库表:

我想实现的是:我想插入一个新的记录:value_id自动递增,machine_id tag_name,int_值,real_值和bool_值

我有以下代码:

*检索计算机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语句之前,您可以在应用程序中创建一个IF来验证您的参数

根据您的查询,我相信您需要更新:


这就是您需要的吗?

插入时不能使用Where子句。但是,在使用Insert Into时,可以使用Where。在您的声明中,我想您缺少Where子句之前的Select From

举个例子:

INSERT INTO tableNameDestination
SELECT feild(s),... 
FROM tableNameSource
WHERE Condition
就你而言:

INSERT INTO waardes(tag_name, int_value, real_value, bool_value) VALUES(@tagName, @intValue, @doubleValue, @boolValue) Select field1, field2, field3, field4 from machine WHERE machine.machine_id LIKE " + "'" + machineID + "'";

不能使用insert语句中的where,因为insert语句用于向表中添加新行。您最好使用update语句。

那么问题出在哪里?为什么需要在何处插入?你是说更新吗?可能是重复的是插入到。。。。从…起其中x=z?如果要使用WHERE子句等条件更新现有记录,则需要使用UPDATE query。@RahulHendawe ahhh。。OP想要更新一个记录o_o
INSERT INTO waardes(tag_name, int_value, real_value, bool_value) VALUES(@tagName, @intValue, @doubleValue, @boolValue) Select field1, field2, field3, field4 from machine WHERE machine.machine_id LIKE " + "'" + machineID + "'";