【发布时间】:2016-03-02 14:36:55
【问题描述】:
我正在尝试将字符串和布尔值从一种形式发送到另一种形式。我要发送的字符串是 PayrollNo,该名称也出现在 ODeDb 数据库中。
这是我正在使用的代码,但它不起作用,
private void BtnContinue_Click(object sender, EventArgs e)
{
string ConnString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\HoliPlanData.accdb;Persist Security Info=False";
string Query = "SELECT PayrollNo, FirstName, LastName FROM [Employee] WHERE (FirstName + ' ' + LastName) =" +DropBoxEmp.Text;
EmployeeDetails form = new EmployeeDetails();
using (OleDbConnection Conn = new OleDbConnection(ConnString))
{
Conn.Open();
OleDbCommand GetPayRoll = new OleDbCommand(Query, Conn);
string NewPayroll = (GetPayRoll.ExecuteNonQuery()).ToString();
Conn.Close();
form.PassValuePayrollNo = NewPayroll;
form.PassEditing = true;
form.Tag = this;
form.Show(this);
Hide();
}
}
我得到了错误:
抛出异常:“System.Data.OleDb.OleDbException”在 System.Data.dll
附加信息:查询中的语法错误(缺少运算符) 表达式 '(FirstName + ' ' + LastName) =Gary Lindsay'。
DropBoxEMP 是一个组合框,其中包含从 [Employee] 附加的名字和姓氏。 Gary Lindsay 是表 [Employee] 中附加的名字和姓氏 我应该如何更改我的代码以正确发送字符串? 任何帮助将不胜感激
【问题讨论】:
-
当您使用参数提供值时,您 1) 将解决问题; 2)防止sql注入攻击
-
如何编辑我的代码来做到这一点?
-
本题有一个使用参数化查询的例子:stackoverflow.com/questions/12048152/oledb-parameterized-query