簡體   English   中英

使用 where 子句插入查詢

[英]Insert into query with where clause

案例:我正在嘗試使用 MySql.Data.MySqlClient 在 C# 中執行一個查詢,其中包含 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

看看這個問題: 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%

這是你需要的嗎?

不能與 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 + "'";

您不能在insert語句中使用where ,因為 insert 語句用於向表中添加新行。 你最好使用更新語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM