数据库sql插入数据失败!该怎么处理
数据库sql插入数据失败!!!
button7是打印报表
sql中建的数据库名是水晶,表名是打印报表
通过下面的语句给数据库插入数据,目的是运行后水晶报表显示表中各列的具体内容。
这是sql中的建的表:

这是运行后的报表:

问题:
1,运行后报表中只显示在sql表中写的“火车集尘器气密性试验”,但是没有button7语句中插入数据库的值(试验标准、结果、结论等)!
2,运行后程序显示“插入数据失败”!
是语句的问题,还是数据库的设置问题?c#可以读取sql表格的数据,但是sql不能读取c#的赋值!
private void button7_Click(object sender, EventArgs e)
{
string dbConnString = "Data Source= VVD3WSAUT2Z3GWZ;Initial Catalog= 水晶;uid = sa; pwd = 123;";
string sql = string.Format("update [打印报表] set 试验标准='一分钟内漏泄量≤2Kpa',试验结果='漏泄量{0}Kpa',结论='{1}',操作员='{2}' where 试验项目='集尘器气密性试验' ", textBox13.Text, textBox6.Text, comboBox2.Text);
try
{
SqlConnection conn = new SqlConnection(dbConnString);
{
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
int val = cmd.ExecuteNonQuery();
conn.Close();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
if (val <= 0)
MessageBox.Show("插入数据失败!");
else
MessageBox.Show("插入数据成功!");
}
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
this.Hide();
Form3 f = new Form3();
f.ShowDialog();
}
------解决方案--------------------
尽量不要用拼接SQL的办法操作表,用参数化发,这样很多问题都能解决
------解决方案--------------------
where 试验项目='集尘器气密性试验'
我看到了一条修改语句,而不是所谓的插入,而且以上条件 你确保查到了记录,如果根据条件查找到相关记录,自然没有可以修改的数据
而且,你可以断点,看一下,最终执行的sql语句是什么,然后放在SQL中运行,看结果即可,估计所影响的行数为0
------解决方案--------------------
很明显你这是修改数据。要确保更新字段的类型与输入的类型一致。
加断点,把你的sql语句读取出来,放到数据库编译器里。看能执行成功不?
------解决方案--------------------
where 试验项目='集尘器气密性试验' ==>where 试验项目='火车集尘器气密性试验'
------解决方案--------------------
去查询执行分析器中执行断点的sql吧 ,不过你这中文表名,中文字段。。。。。。。。。
------解决方案--------------------
用参数的方式吧,不要拼字符串
------解决方案--------------------
这种我都是用参数的方式
button7是打印报表
sql中建的数据库名是水晶,表名是打印报表
通过下面的语句给数据库插入数据,目的是运行后水晶报表显示表中各列的具体内容。
这是sql中的建的表:
这是运行后的报表:
问题:
1,运行后报表中只显示在sql表中写的“火车集尘器气密性试验”,但是没有button7语句中插入数据库的值(试验标准、结果、结论等)!
2,运行后程序显示“插入数据失败”!
是语句的问题,还是数据库的设置问题?c#可以读取sql表格的数据,但是sql不能读取c#的赋值!
private void button7_Click(object sender, EventArgs e)
{
string dbConnString = "Data Source= VVD3WSAUT2Z3GWZ;Initial Catalog= 水晶;uid = sa; pwd = 123;";
string sql = string.Format("update [打印报表] set 试验标准='一分钟内漏泄量≤2Kpa',试验结果='漏泄量{0}Kpa',结论='{1}',操作员='{2}' where 试验项目='集尘器气密性试验' ", textBox13.Text, textBox6.Text, comboBox2.Text);
try
{
SqlConnection conn = new SqlConnection(dbConnString);
{
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
int val = cmd.ExecuteNonQuery();
conn.Close();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
if (val <= 0)
MessageBox.Show("插入数据失败!");
else
MessageBox.Show("插入数据成功!");
}
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
this.Hide();
Form3 f = new Form3();
f.ShowDialog();
}
------解决方案--------------------
尽量不要用拼接SQL的办法操作表,用参数化发,这样很多问题都能解决
------解决方案--------------------
where 试验项目='集尘器气密性试验'
我看到了一条修改语句,而不是所谓的插入,而且以上条件 你确保查到了记录,如果根据条件查找到相关记录,自然没有可以修改的数据
而且,你可以断点,看一下,最终执行的sql语句是什么,然后放在SQL中运行,看结果即可,估计所影响的行数为0
------解决方案--------------------
很明显你这是修改数据。要确保更新字段的类型与输入的类型一致。
加断点,把你的sql语句读取出来,放到数据库编译器里。看能执行成功不?
------解决方案--------------------
where 试验项目='集尘器气密性试验' ==>where 试验项目='火车集尘器气密性试验'
------解决方案--------------------
去查询执行分析器中执行断点的sql吧 ,不过你这中文表名,中文字段。。。。。。。。。
------解决方案--------------------
用参数的方式吧,不要拼字符串
------解决方案--------------------
这种我都是用参数的方式