问题描述
“System.Data.SqlClient.SqlException”类型的未经处理的异常出现在System.Data.dll中。其他信息:'8412541'附近有语法错误。
解决方案
解决方案二:
以下是我的代码
解决方案三:
privatevoidbuttonBorrow_Click(objectsender,EventArgse){stringstrconn=@"DataSource=.;InitialCatalog=D:数据库课设图书管理信息系统.MDF;IntegratedSecurity=True";DateTimenow=System.DateTime.Now;DateTimereturntime=now.AddMonths(2);//MessageBox.Show(now.ToString());SqlConnectionconn=newSqlConnection(strconn);stringIsBorrow="select能否借出from图书信息表where书籍条码='"+this.textBox条码.Text+"'and能否借出='是'";SqlCommandcomd=newSqlCommand(IsBorrow,conn);conn.Open();SqlDataReaderdr=comd.ExecuteReader();dr.Read();//判段此书是否可借if(dr.HasRows==true){dr.Close();stringname=@"select书名from图书信息表where书籍条码='"+this.textBox条码.Text+"'";stringsqlStr=@"insertinto借阅一览表([书籍条码],[书名],[读者编号],[借书日期],[还书日期])values('"+textBox条码+"','"+name+"','"+textBox读者编号+"','"+now+"','"+returntime+"')";SqlCommandcmd=newSqlCommand(sqlStr,conn);intcount=cmd.ExecuteNonQuery();if(count>0){MessageBox.Show("插入成功");}else{MessageBox.Show("插入失败");}//此书借走后则将此书设置为已被借走stringsqlSetIsBorrow=@"update图书信息表set现存数量=现存数量-1where书籍条码='"+this.textBox条码+"'";SqlCommandcommd=newSqlCommand(sqlSetIsBorrow,conn);intcount1=commd.ExecuteNonQuery();if(count1>0){MessageBox.Show("修改图书表成功");}else{MessageBox.Show("修改图书表失败");}//书籍借走后将此用户的已借数量加1StringsqlupdateStr=@"update读者信息表set未还书数=未还书数+1where读者编号='"+this.textBox读者编号+"';";SqlCommandsqlcommand=newSqlCommand(sqlupdateStr,conn);intcount2=sqlcommand.ExecuteNonQuery();if(count2>0){MessageBox.Show("修改读者表成功");}else{MessageBox.Show("修改读者表失败");}MessageBox.Show("借书成功");conn.Close();}else{//dr.Close();MessageBox.Show("此书已被借走或不存在,请重新输入","提示");conn.Close();//return;}
解决方案四:
希望大家能帮帮忙
解决方案五:
首先你加个TryCatch,然后调试,确切的直到是那一段出错,然后我再来给你看看。
解决方案六:
this.textBox条码-》this.textBox条码.Text
解决方案七:
引用4楼lc2737的回复:
首先你加个TryCatch,然后调试,确切的直到是那一段出错,然后我再来给你看看。
我觉得我要教会的是你找问题的方法,而不是直接告诉你错误在哪里。
解决方案八:
引用6楼lc2737的回复:
Quote: 引用4楼lc2737的回复:
首先你加个TryCatch,然后调试,确切的直到是那一段出错,然后我再来给你看看。我觉得我要教会的是你找问题的方法,而不是直接告诉你错误在哪里。
我用的是断点查询错误,但是修改数据库返回的行数总是0,不知道怎么回事。
解决方案九:
引用5楼duanzi_peng的回复:
this.textBox条码-》this.textBox条码.Text
这个我已经修改了。
解决方案十:
引用7楼sinat_22269477的回复:
Quote: 引用6楼lc2737的回复:
Quote: 引用4楼lc2737的回复:
首先你加个TryCatch,然后调试,确切的直到是那一段出错,然后我再来给你看看。我觉得我要教会的是你找问题的方法,而不是直接告诉你错误在哪里。
我用的是断点查询错误,但是修改数据库返回的行数总是0,不知道怎么回事。
那你将最后执行返回为0的Sql语句直接放到SqlManagement里面去执行看看,对于Sql来说,可是我们的基本功啊,这个必须得练好。
解决方案十一:
引用8楼sinat_22269477的回复:
Quote: 引用5楼duanzi_peng的回复:
this.textBox条码-》this.textBox条码.Text这个我已经修改了。
调试的时候取出来那个代码,然后去数据库执行一下看看是否能成功,
解决方案十二:
引用10楼u013063561的回复:
Quote: 引用8楼sinat_22269477的回复:
Quote: 引用5楼duanzi_peng的回复:
this.textBox条码-》this.textBox条码.Text这个我已经修改了。
调试的时候取出来那个代码,然后去数据库执行一下看看是否能成功,
在数据库执行没问题的话,就说明语句是没问题的,那你就得在你代码里面做工作了,
解决方案十三:
SQL语句有错误,而且已经告诉你了在'8412541'附近你是否数据库里字段类型是number,那么就不要加单引号
解决方案十四:
你的查询语句有错误,你在查询语句设个断点,单步执行,看看到哪步出错了 ,读者编号会不会是整数型,如果是,就不要用单引号,
解决方案十五:
C#插入、修改SQLServer数据库示例//插入数据库数据privatevoidbutton1_Click(objectsender,EventArgse){//调用datatier对象的Add()方法向数据库添加数据dt.Add(newInstance(){Name=txt_name_add.Text,phone=txt_phone_add.Text});dataGridView1.DataSource=dt.Select();//更新dataGridView1控件中的信息Clear();//清空TextBox控件中的文本}//自定义方法插入信息publicvoidAdd(Instanceit){SqlConnectionsc=GetConnection();//调用GetConnections()方法,得到连接对象try{sc.Open();//打开到数据库的连接SqlCommandcmd=newSqlCommand(//创建SqlCommand对象"insertintotb_friend(names,phone)values(@names,@phone)",sc);cmd.Parameters.Add("@names",SqlDbType.VarChar).Value=it.Name;//向SqlCommand对象添加参数cmd.Parameters.Add("phone",SqlDbType.VarChar).Value=it.phone;//向SqlCommand对象添加参数cmd.ExecuteNonQuery();//执行SqlCommand对象中的SQL命令}catch(Exceptionex)//捕获异常{Console.WriteLine(ex.Message);}finally{if(sc.State==ConnectionState.Open)//判断是否连接数据库{sc.Close();//如果已经连接则关闭连接}}}//codego.net/tags/1/1///修改数据库信息privatevoidbtn_update_Click(objectsender,EventArgse){//调用datatier对象的Update()方法,更改数据库中的信息dt.Update(newInstance(){Name=txt_name_update.Text,phone=txt_phone_update.Text});dataGridView1.DataSource=dt.Select();//更新dataGridView1控件中的信息Clear();//清空TextBox控件中的文本}//自定义修改数据方法publicvoidUpdate(Instanceit){SqlConnectionsc=GetConnection();//调用GetConnections()方法,得到连接对象try{sc.Open();//打开到数据库的连接SqlCommandcmd=newSqlCommand(//创建SqlCommand对象"updatetb_friendsetphone=@phonewherenames=@names",sc);cmd.Parameters.Add("@names",SqlDbType.VarChar).Value=it.Name;//向SqlCommand对象添加参数cmd.Parameters.Add("phone",SqlDbType.VarChar).Value=it.phone;//向SqlCommand对象添加参数cmd.ExecuteNonQuery();//执行SqlCommand对象中的SQL命令}catch(Exceptionex){Console.WriteLine(ex.Message);}finally{if(sc.State==ConnectionState.Open)//判断是否连接数据库{sc.Close();//如果已经连接则关闭连接}}}