使用where子句

时间:2017-10-02 10:47:50

标签: c# mysql

案例:我正在尝试使用MySql.Data.MySqlClient在C#中执行查询,其中包含INSERT INTO,我收到错误(见下文):

Error

数据库表:

Database table

我想要实现的目标:我想插入一条新记录:“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());
}

希望你们能帮忙!

3 个答案:

答案 0 :(得分:2)

Insert不能使用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 + "'";

答案 1 :(得分:1)

没有INSERT和where子句。

看看这个问题:How to insert with where clause

也许,您可以在应用内创建IF,以便在执行INSERT声明之前验证您的参数。

根据您的查询,我认为您需要UPDATE

UPDATE waardes SET tag_name = @tagName,
  int_value = @intValue, real_value = @doubleValue,
  bool_value = @boolValue WHERE machine.machine_id LIKE %1%

这是你需要的吗?

答案 2 :(得分:0)

您无法在 insert 语句中使用 where ,因为insert语句用于向表中添加新行。您最好使用 update 语句。