请教一下,我用参数化来执行,对数据库的插入操作,但错误提示如下,pax在数据库的类型为Int型,相关代码如下,请看看如何修改优化;
private void btnsave_Click(object sender, EventArgs e)
{
string ValueFormTextbox = Form1.TextBoxValue;
SqlConnection Conn = new SqlConnection("server= 192.168.100.247; database= Whmesinfo;User= Sa;Password=whyy@2021");
Conn.Open();
string str = "select count(*) from w_prohourcount where batchNo='" + textprobatchNo.Text.ToString() + "'";
SqlCommand com = new SqlCommand(str, Conn);
int intcont = Convert.ToInt32(com.ExecuteScalar());
if (intcont > 0)//判断数据库中是否有相同的录
{
//Response.write("alert('对不起!不允许填写相同记录!')");
Console.WriteLine("不允许填写相同记录");
}
else
{
try
{
string SqlString = @"INSERT INTO [dbo].[w_prohourcount]
(teams,banci,process,proname,spec,unit,daypro,sumpro,state,pax,ulh,note)
values
(@teams,@banci,@process, @proname, @spec,@unit,@daypro,@sumpro,@state,@pax,@ulh,@note)";
SqlCommand comm = new SqlCommand(SqlString, Conn);
comm.Parameters.AddWithValue("@teams", "teams");
comm.Parameters.AddWithValue("@banci", "banci");
comm.Parameters.AddWithValue ("@process", "process");
comm.Parameters.AddWithValue("@proname", "proname");
comm.Parameters.AddWithValue("@spec", "spec");
comm.Parameters.AddWithValue("@unit", "unit");
comm.Parameters.AddWithValue("@daypro", "daypro");
comm.Parameters.AddWithValue("@sumpro", "sumpro");
comm.Parameters.AddWithValue("@state", "state");
comm.Parameters.AddWithValue("@pax", SqlDbType.NVarChar).Value = "pax";
comm.Parameters.AddWithValue("@ulh", "ulh");
comm.Parameters.AddWithValue("@note", "note");
comm.ExecuteNonQuery();
MessageBox.Show("数据保存成功!");
}
catch (Exception ex)
{
// 显示保存失败的错误信息
MessageBox.Show("保存失败:" + ex.Message);
}
finally
{
// 关闭数据库连接
Conn.Close();
}
}
}
既然是int
comm.Parameters.AddWithValue("@pax", SqlDbType.NVarChar).Value = "pax";
这里为啥用 NVArchar
而且value(包括所有的)是变量,不能有引号