我有这个查询,它给了我错误,无法在表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语句中并置字符串。

关于c# - 带有Like子句的insert和select语句的正确查询是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40690463/

10-10 23:55