[英]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.