错误','附近的语法不正确

时间:2016-03-29 17:54:17

标签: asp.net c#-4.0 ado.net

SqlConnection con = new SqlConnection(@"Data Source=shashi-PC\SQLEXPRESS;Initial Catalog=payroll;Integrated Security=True;Pooling=False");
        SqlCommand com = new SqlCommand("insert into Leave_trans values(" + txtempid.Text + ",'" + ddlleavetype.SelectedValue + "'," + txtallowedays.Text + "," + txtpendingleave.Text + ",'" + txtleavefrom.Text + "','" + txtleaveto.Text + "'," + txttotalleaves.Text + ")");
        com.Connection = con;
        con.Open();
        com.ExecuteNonQuery();
        Response.Write("<script>alert('Leave data saved successfully')</script>");
        con.Close();

2 个答案:

答案 0 :(得分:1)

这并没有直接回答你的问题,但你应该从不采取用户输入并使用字符串连接来构建SQL查询(请花些时间阅读SQL注入,例如{{3 }}或here)。

您应该使用SqlParameter个实例作为值的占位符,而不是连接完整查询,例如:

var com = new SqlCommand(
    "insert into Leave_trans values(@empId, @leaveType, @allowedDays, ...)");
com.Parameters.Add(new SqlParameter("@empId", txtempid.Text));
com.Parameters.Add(new SqlParameter("@leaveType", ddlleavetype.SelectedValue));
com.Parameters.Add(new SqlParameter("@allowedDays", txtalloweddays.Text));
...

BTW:问题的原因是你没有在查询中单引词输入(例如txtempid.Text不是单引号)。使用SqlParameters也可以解决这个问题。

答案 1 :(得分:0)

我认为问题出在您的查询中。您没有向我们提供数据库列的数据类型。但假设您从查询中插入了TextBoxDropDownList个选定项目中的一些文字。在TextBox文本中,您将始终获得字符串类型值,并且要将string插入列中,您应该在其前后使用单引号''。但是在您的查询中,您没有对某些值参数使用任何引用。我做了一个假设并向你询问。试试这个更新过的。

SqlConnection con = new SqlConnection(@"Data Source=shashi-PC\SQLEXPRESS;Initial Catalog=payroll;Integrated Security=True;Pooling=False");
        SqlCommand com = new SqlCommand("insert into Leave_trans values(" + "'" + txtempid.Text + "'", "'" + ddlleavetype.SelectedValue + "'","'" + txtallowedays.Text + "'","'" + txtpendingleave.Text + "'", "'" + txtleavefrom.Text + "'","'" + txtleaveto.Text + "'", "'" + txttotalleaves.Text + "')");
        com.Connection = con;
        con.Open();
        com.ExecuteNonQuery();
        Response.Write("<script>alert('Leave data saved successfully')</script>");

但我有一些建议,你不应该使用string作为你的表的主键数据类型,它应该是int类型而另一个是你应该{{1}您int中所选项目的id而不是文字。