簡體   English   中英

對帶有Like子句的insert和select語句的正確查詢是什么?

[英]what is the proper query for insert and select statement with Like clause?

我有此查詢,它給我的錯誤是無法在表tbl_emp_gs上插入null。 我不知道這里的代碼有什么問題。

con.Open();
sqc = con.CreateCommand();
string query1 = "INSERT INTO tbl_emp_gs (EmployeeID,StepID) VALUES ('"+ lblEmpID.Text +"', (Select StepID from tbl_gradestep where StepID Like @grade))";
 sqc.Parameters.AddWithValue("@grade",cmbStepNumber.Text);
 sqc.CommandText = query1;
 sdr = sqc.ExecuteReader();
 MessageBox.Show("Data Saved.", "Message",MessageBoxButtons.OK,MessageBoxIcon.Information);

我想從tbl_gradestep表中獲取步驟ID,

內部查詢返回NULL 您應該遵循like語法以檢索正確的結果(如果存在):

string query1 = "INSERT INTO tbl_emp_gs (EmployeeID,StepID) VALUES ('"+ lblEmpID.Text +"', (Select StepID from tbl_gradestep where StepID Like @grade))";

sqc.Parameters.AddWithValue("@grade", "%" + cmbStepNumber.Text + "%");

我建議使用sqc.ExecuteNonQuery()除非您有充分的理由執行數據讀取器。

另外,不建議在SQL語句中並置字符串。

您應該使用插入選擇,而不要使用帶有選擇。的值。通過這種方式,僅當選擇工作且在選擇模式下在行中插入相同數量的行時,才執行插入

假設@grade是搜索模式

"INSERT INTO tbl_emp_gs (EmployeeID,StepID)
 SELECT ('"+ lblEmpID.Text +"', StepID 
from tbl_gradestep where StepID Like concat('%', @grade, '%'))"
string query1 = "INSERT INTO tbl_emp_gs (EmployeeID,StepID) VALUES ('"+ lblEmpID.Text +"', (Select StepID from tbl_gradestep where StepID Like '%@grade%'))";

暫無
暫無

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

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