
where c.申请_序号 == int.Parse(this.xuhao.Text.Trim())
应该是转换int的时候出错导致的。
你应该在Linq查询前,就声明一个int 变量,将this.xuhao.Text.Trim()转换好,再在Linq中使用。
)。但是,LINQ TO SQL不是万能的。例如,你在重新修改或设计数据库表格后,原先使用LINQ TO SQL生成的DATACONTEXT类并不会自动更新。因此,针对这些更改之后的 *** 作,需要特别注意。二、问题描述[一]本文中首先记录的是使用LINQ插入数据库记录时涉及的一个基本概念级问题。请看下面的代码片断:public bool InsertUserStatus(string UserName){eMailDataContext dt = new eMailDataContext()try{//删除可能存在的原有用户状态信息Table3 u = dt.Table3.First(m =>m.abc == UserName)//if (dt.Table3.Count() != 0)//{// Table3 u = dt.Table3.First(m =>m.abc == UserName)//if (u != null)//{dt.Table3.DeleteOnSubmit(u)dt.SubmitChanges()//}//}//创建新的用户状态信息Table3 userstatus = new Table3{abc = UserName}//插入到数据库表格UserStatus中dt.Table3.InsertOnSubmit(userstatus)dt.SubmitChanges()return true}catch (System.InvalidOperationException){return false//(2)}}上述代码的意思是,在表格Table3 中先删除可能存在的符合条件的记录,然后在此表格中再插入一条记录数据。上面的代码将“可能”引发异常,将流程控制转向(2)处。这些“可能”在于,数据表格Table3 中最初无记录,则必引发异常;如果有记录,则一切符合既定 *** 作要求。于是,修改上面的代码为如下:public bool InsertUserStatus(string UserName){eMailDataContext dt = new eMailDataContext()try{//删除可能存在的原有用户状态信息if (dt.Table3.Count() != 0)// (1){Table3 u = dt.Table3.First(m =>m.abc == UserName)if (u != null){dt.Table3.DeleteOnSubmit(u)dt.SubmitChanges()}}//创建新的用户状态信息Table3 userstatus = new Table3{abc = UserName}//插入到数据库表格UserStatus中dt.Table3.InsertOnSubmit(userstatus)dt.SubmitChanges()return true}catch (System.InvalidOperationException){return false}}也就是说,删除 *** 作前需要先判定数据表格是否记空--这可以通过红色的if语句((1)处)来实现。如此以来,无论表格中是否事先存在记录都可以往下执行可能的删除及插入 *** 作了。[二]再来看一个例子,例如: //删除旧的邮件public static void DeleteSubject(string UserName, string host){eMailDataContext dt = new eMailDataContext()string cmdText = "delete from MailDownloadTemp where UserName=" + "'"+UserName +"'"+ " and Host=" + "'"+host+"'"try{int result = dt.ExecuteCommand(cmdText)return}catch (System.InvalidOperationException){return}}上述 *** 作同样抛出异常。因此,需要同上面提到的那样,先进行数据库表格记录数据判断,再进行可能的删除 *** 作。因此,再修改上面代码,如下所示: //删除旧的邮件欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)