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();
答案 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)
我认为问题出在您的查询中。您没有向我们提供数据库列的数据类型。但假设您从查询中插入了TextBox
和DropDownList
个选定项目中的一些文字。在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
而不是文字。