我在visual studio 2012中执行更新查询时收到此错误

时间:2015-05-30 16:23:36

标签: sql sql-server sql-server-2008 visual-studio-2012 sql-update

  

' ='

附近的语法不正确

我的代码是

"update staff_Tables 
 set emp_id='" + txtEmployeeID.Text + "' , 
     emp_sal='" + txtEmpSal.Text + "', 
     emp_name='" + txtEmployeeName.Text + "',
     emp_Deignation='" + txtDesignation.Text + "',
     Gender='" + cboGender.Text + "',
     contactno='" + txtContact.Text + "',
     Address='" + rtbAddress.Text + "',
     Joining_Date='" + txtjoindate.Text + "' 
 where txtid=" + txtid.Text, sqlcon.getCon());

2 个答案:

答案 0 :(得分:1)

首先,你不应该像这样连接sql查询。 您的查询极易受到Sql Injectio n攻击。

始终使用stored proceduresparameterized queries

第二,你试过调试吗?根据列名称判断,Emp_IdEmp_Salcontactno可能是数字数据,而不是字符串,因此'围绕这些价值观是错误的。

您的查询应如下所示:

"update staff_Tables 
 set emp_id = @emp_id, 
     emp_sal = @emp_sal, 
     emp_name = @emp_name,
     emp_Deignation = @emp_Deignation,
     Gender = @Gender,
     contactno = @contactno,
     Address = @Address,
     Joining_Date = @Joining_Date 
 where txtid = @txtid"

并将参数添加到SqlCommand.Parameters集合中,如下所示:

cmd.Parameters.Add("@emp_id, SqlDBType.Int).Value = txtEmployeeID.Text

答案 1 :(得分:1)

您的.Text值中可能只有一个引号,通过将它们加倍来修复,例如:

Address='" + Replace(rtbAddress.Text, "'", "''") + "' vb
Address='" + rtbAddress.Text.Replace("'", "''") + "' #c

但是,是的,你可以使用这种更新数据库的方法对sql注入开放。