C#插入查询 - 从ExecuteNonQuery没有返回值
你能帮我解决这个问题吗?我的代码似乎很好,但从ExecuteNonQuery
没有返回值。见下面我的代码:C#插入查询 - 从ExecuteNonQuery没有返回值
private void btnAdd_Click(object sender, EventArgs e)
{
OleDbConnection conn;
conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=dbsCOLLABERA.accdb;Persist Security Info=False;");
string sqlAdd = "insert into tblEmployeeList(empID,empLName,empFName,empMName,empGender,empBDate,empAddress,empEAddress,empPNumber,empPosition,empStatus,empHRate,empOTRate,empTimeIn,empTimeOut) values ('"
+ txtID.Text + "','" + txtLName.Text + "','" + txtFName.Text + "','" + txtMName.Text + "','" + txtGender.SelectedValue + "','" + txtBDate.Text + "','" + txtAddress.Text + "','" + txtEAddress.Text + "','" + txtPNumber.Text + "','" + txtPosition.Text + "','"
+ txtStatus.SelectedValue + "'," + txtHRate.Text + "," + txtOTRate.Text + ",'" + txtTimeIn.SelectedValue + "','" + txtTimeOut.SelectedValue + "')";
OleDbCommand cmdAdd = new OleDbCommand(sqlAdd, conn);
conn.Open();
cmdAdd.ExecuteNonQuery();
//oledbcommand.ExecuteNonQuery();
conn.Close();
MessageBox.Show(sqlAdd);
}
它应该返回受影响的行数,在这种情况下1.尝试分配结果:
int rowsAffected = cmdAdd.ExecuteNonQuery();
使用此代码:
string sqlAdd = "insert into tblEmployeeList(empID,empLName,empFName,empMName,empGender,empBDate,empAddress,empEAddress,empPNumber,empPosition,empStatus,empHRate,empOTRate,empTimeIn,empTimeOut) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
cmdAdd.Parameters.AddWithValue("?", txtID.Text);
cmdAdd.Parameters.AddWithValue("?", txtLName.Text);
cmdAdd.Parameters.AddWithValue("?", txtFName.Text);
cmdAdd.Parameters.AddWithValue("?", txtMName.Text);
cmdAdd.Parameters.AddWithValue("?", txtGender.SelectedValue);
cmdAdd.Parameters.AddWithValue("?", txtBDate.Text);
cmdAdd.Parameters.AddWithValue("?", txtAddress.Text);
cmdAdd.Parameters.AddWithValue("?", txtEAddress.Text);
cmdAdd.Parameters.AddWithValue("?", txtPNumber.Text);
cmdAdd.Parameters.AddWithValue("?", txtPosition.Text);
cmdAdd.Parameters.AddWithValue("?", txtStatus.SelectedValue);
cmdAdd.Parameters.AddWithValue("?", txtHRate.Text);
cmdAdd.Parameters.AddWithValue("?", txtOTRate.Text);
cmdAdd.Parameters.AddWithValue("?", txtTimeIn.SelectedValue);
cmdAdd.Parameters.AddWithValue("?", txtTimeOut.SelectedValue);
这可以修复您的SQL注入漏洞,使用参数传递参数,不需要自己构建SQL。而ODBC使用?
作为参数,因为它不支持参数。
它不显示任何错误位它不会向表中插入任何值 – CaptainBadass 2014-10-09 14:52:58
如果运行此操作,'rowsAffected'的值是什么?你确定没有例外吗?试着在它周围设置一个“try ... catch”。 – 2014-10-09 14:53:50
什么也没有显示和nothings发生。它工作正常,但没有将数据插入表格。 – CaptainBadass 2014-10-09 14:55:41
你期待什么作为回报价值? INSERT语句不返回任何内容。 :) – user743414 2014-10-09 14:48:59
你的代码对SQL注入攻击是开放的,你真的应该使用参数化查询。 – 2014-10-09 14:49:46
你需要澄清你期望被退回的东西......以及问题是什么,因为你是对的,你的代码看起来很好,因为它... – DotN3TDev 2014-10-09 14:50:01