问题描述
我自己写了一个asp.net网站,数据库是sql2000,因为我的电脑是vistahome版,所以装不了iis,但是我是用网上的一个miniASPNETServer来调试程序的,可以修改和删除信息,但是就是不能插入信息,没有提示错误,就是点保存新增信息后,返回查询页面,但是就是没有把信息插入到数据库。我的操作sql的语句是写在C#里,并且是生成dll来调用的。以下是插入的函数:请大家帮忙看看是程序的问题,还是我电脑的问题。///<returns>返回ID,如果发生错误则返回-1</returns>publicintAdd(AnnounceInfomodel){intresult;if(model==null){return-1;}stringsql="insertinto"+tableName+"(title,content,author,addTime,isSelected,outTime)values(@title,@content,@author,@addTime,@isSelected,@outTime)"+";SELECT@@IDENTITY";SqlParameter[]prams={Database.MakeInParam("@Title",SqlDbType.NVarChar,255,model.Title),Database.MakeInParam("@Content",SqlDbType.NText,0,model.Content),Database.MakeInParam("@Author",SqlDbType.NVarChar,50,model.Author),Database.MakeInParam("@AddTime",SqlDbType.DateTime,8,model.AddTime),Database.MakeInParam("@IsSelected",SqlDbType.TinyInt,1,model.IsSelected),Database.MakeInParam("@OutTime",SqlDbType.Int,4,model.OutTime)};try{result=(Convert.ToInt32(Database.ExecuteDataSet(sql,prams).Tables[0].Rows[0][0]));}catch{result=-1;}returnresult;}以下是能成功操作的update语句:///<returns></returns>publicintUpdate(AnnounceInfomodel,stringfilter){intresult;if(string.IsNullOrEmpty(filter)){thrownewException("The'filter'cannotbenull!");}stringsql=@"update"+tableName+"settitle=@title,content=@content,author=@author,addTime=@addTime,isSelected=@isSelected,outTime=@outTime"+"where"+filter;SqlParameter[]prams={Database.MakeInParam("@Title",SqlDbType.NVarChar,255,model.Title),Database.MakeInParam("@Content",SqlDbType.NText,0,model.Content),Database.MakeInParam("@Author",SqlDbType.NVarChar,50,model.Author),Database.MakeInParam("@AddTime",SqlDbType.DateTime,8,model.AddTime),Database.MakeInParam("@IsSelected",SqlDbType.TinyInt,1,model.IsSelected),Database.MakeInParam("@OutTime",SqlDbType.Int,4,model.OutTime)};try{result=Database.ExecuteNonQuery(sql,prams);}catch(Exceptionex){throwex;}returnresult;}我就是弄不懂,问题插入语句不行,而更新语句和删除语句就可以。希望大家帮个忙啦
解决方案
解决方案二:
对于insert你也应该用Database.ExecuteNonQuery(sql,prams);如果想要返回刚才生成的新纪录的id你应该再次进行一次查询:'Getthenewid:sql="SELECT@@IDENTITYASid"Setrs=cn.Execute(sql)id=rs.Fields("id").value或Convert.ToInt32(Database.ExecuteDataSet(sql).Tables[0].Rows[0][0])你会获取新的id
解决方案三:
1:调试的话应该用VS自带的ASP.NETDevelopmentServer嘛~2:把try/catch块去掉,看看是不是有报错
解决方案四:
从你的publicintAdd(AnnounceInfomodel)这段代码来看,代码编写没有任何问题,肯定你调用add方法时参数值错误,一般的情况是时间参数问题或数据类型不正确,或者你得数据库不允许为空
解决方案五:
调试看看错在哪啊,监视,拿SQL语句到查询分析器中调试
解决方案六:
哦,有个问题就是,程序里所有的插入语句都是不行的,没有把数据插入到里面去。
解决方案七:
支持4楼的想法,以前我也经常遇到这样的问题,有可能是sql语句本身的错误!在查询分析器中试一下!