热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我调用存储过程出现输入字符串的格式不正确

SqlParameterobjOutputParameternewSqlParameter(@MemberID,SqlDbType.Int);comm.Parameters.Add(ob
SqlParameter objOutputParameter=new SqlParameter("@MemberID",SqlDbType.Int);
comm.Parameters.Add(objOutputParameter);
objOutputParameter.Direction=ParameterDirection.Output;

comm.Parameters.Add("@服务站号",SqlDbType.VarChar,20);
comm.Parameters.Add("@会员卡号",SqlDbType.VarChar,50);
comm.Parameters.Add("@发票号",SqlDbType.NVarChar,50);
comm.Parameters.Add("@会员类别",SqlDbType.NVarChar,20);
comm.Parameters.Add("@入会日期",SqlDbType.DateTime);
comm.Parameters.Add("@入会方式",SqlDbType.NVarChar,20);
comm.Parameters.Add("@领卡方式",SqlDbType.NVarChar,20);
comm.Parameters.Add("@会费",SqlDbType.Decimal);
comm.Parameters.Add("@交费年限",SqlDbType.Int);
comm.Parameters.Add("@交费日期",SqlDbType.DateTime);
comm.Parameters.Add("@续会日期",SqlDbType.DateTime);
comm.Parameters.Add("@续会方式",SqlDbType.NVarChar,20);
comm.Parameters.Add("@续会年限",SqlDbType.Int);
comm.Parameters.Add("@续会提醒",SqlDbType.Bit);
comm.Parameters.Add("@是否过期",SqlDbType.Bit);
comm.Parameters.Add("@会员经理",SqlDbType.NVarChar,20);
comm.Parameters.Add("@姓名",SqlDbType.NVarChar,20);
comm.Parameters.Add("@性别",SqlDbType.NVarChar,10);
comm.Parameters.Add("@身份证",SqlDbType.NVarChar,18);
comm.Parameters.Add("@生日",SqlDbType.DateTime);
comm.Parameters.Add("@婚姻状况",SqlDbType.NVarChar,10);
comm.Parameters.Add("@家庭成员人数",SqlDbType.NVarChar,10);
comm.Parameters.Add("@血型",SqlDbType.NVarChar,10);
comm.Parameters.Add("@兴趣爱好",SqlDbType.NVarChar,100);
comm.Parameters.Add("@家庭地址",SqlDbType.NVarChar,50);
comm.Parameters.Add("@邮编",SqlDbType.VarChar,6);
comm.Parameters.Add("@家庭电话",SqlDbType.VarChar,50);
comm.Parameters.Add("@手机",SqlDbType.VarChar,11);
comm.Parameters.Add("@办公电话",SqlDbType.VarChar,50);
comm.Parameters.Add("@电子信箱",SqlDbType.VarChar,100);
comm.Parameters.Add("@网址",SqlDbType.VarChar,50);
comm.Parameters.Add("@学历",SqlDbType.NVarChar,10);
comm.Parameters.Add("@职业",SqlDbType.NVarChar,20);
comm.Parameters.Add("@工作单位",SqlDbType.NVarChar,20);
comm.Parameters.Add("@职务",SqlDbType.NVarChar,20);
comm.Parameters.Add("@驾驶证类型",SqlDbType.NVarChar,10);
comm.Parameters.Add("@发证日期",SqlDbType.DateTime);
comm.Parameters.Add("@发证单位",SqlDbType.NVarChar,20);
comm.Parameters.Add("@驾驶证年审日期",SqlDbType.DateTime);
comm.Parameters.Add("@驾驶证年审提醒",SqlDbType.Bit);
comm.Parameters.Add("@其他联系人",SqlDbType.NVarChar,20);
comm.Parameters.Add("@与本人关系",SqlDbType.NVarChar,20);
comm.Parameters.Add("@联系人电话",SqlDbType.NVarChar,50);
comm.Parameters.Add("@联系人地址",SqlDbType.NVarChar,50);
comm.Parameters.Add("@备注",SqlDbType.NVarChar,200);
comm.Parameters.Add("@车牌号",SqlDbType.NVarChar,10);
comm.Parameters.Add("@品牌",SqlDbType.NVarChar,20);
comm.Parameters.Add("@车型",SqlDbType.NVarChar,20);
comm.Parameters.Add("@颜色",SqlDbType.NVarChar,10);
comm.Parameters.Add("@核定乘客",SqlDbType.Int);
comm.Parameters.Add("@车辆用途",SqlDbType.NVarChar,20);
comm.Parameters.Add("@所在地区",SqlDbType.NVarChar,10);
comm.Parameters.Add("@车架号",SqlDbType.VarChar,30);
comm.Parameters.Add("@发动机号",SqlDbType.VarChar,30);
comm.Parameters.Add("@购车日期",SqlDbType.DateTime);
comm.Parameters.Add("@领证日期",SqlDbType.DateTime);
comm.Parameters.Add("@车辆年检日期",SqlDbType.DateTime);
comm.Parameters.Add("@车辆年检提醒",SqlDbType.Bit);
comm.Parameters.Add("@季度保养日期",SqlDbType.DateTime);
comm.Parameters.Add("@季度保养提醒",SqlDbType.Bit);
comm.Parameters.Add("@养路费到期",SqlDbType.DateTime);
comm.Parameters.Add("@养路费提醒",SqlDbType.Bit);
comm.Parameters.Add("@保险公司",SqlDbType.NVarChar,20);
comm.Parameters.Add("@险种",SqlDbType.NVarChar,100);
comm.Parameters.Add("@投保日期",SqlDbType.DateTime);
comm.Parameters.Add("@投保年限",SqlDbType.Int);
comm.Parameters.Add("@保险到期",SqlDbType.DateTime);
comm.Parameters.Add("@保险到期提醒",SqlDbType.Bit);
comm.Parameters.Add("@保险代理人",SqlDbType.NVarChar,10);
comm.Parameters.Add("@代理人电话",SqlDbType.VarChar,50);
comm.Parameters.Add("@保单号",SqlDbType.VarChar,50);
comm.Parameters.Add("@保险费",SqlDbType.Decimal);
comm.Parameters.Add("@保险提成",SqlDbType.Decimal);
comm.Parameters.Add("@本站投保",SqlDbType.Bit);
comm.Parameters.Add("@录入员",SqlDbType.NVarChar,20);

22 个解决方案

#1


//填冲参数
comm.Parameters["@服务站号"].Value=txtStation.Text;
comm.Parameters["@会员卡号"].Value=txtCard.Text;
comm.Parameters["@发票号"].Value=txtInvoice.Text;
comm.Parameters["@会员类别"].Value=ddlMemberType.SelectedValue.ToString();
comm.Parameters["@入会日期"].Value=txtJoinDate.Text;
comm.Parameters["@入会方式"].Value=ddlJoinType.SelectedValue.ToString();
comm.Parameters["@领卡方式"].Value=ddlGetCardType.SelectedValue.ToString();
comm.Parameters["@会费"].Value=txtFee.Text;
comm.Parameters["@交费年限"].Value=txtYear.Text;
comm.Parameters["@交费日期"].Value=txtPayDate.Text;
comm.Parameters["@续会日期"].Value=txtPayDate.Text;
comm.Parameters["@续会方式"].Value=txtPayDate.Text;
comm.Parameters["@续会年限"].Value=txtStation.Text;
//comm.Parameters["@续会提醒"].Value="1";//chkRenew.Checked.ToString();
//comm.Parameters["@是否过期"].Value="0";
comm.Parameters["@会员经理"].Value=txtManager.Text;
/*comm.Parameters["@姓名"].Value=txtName.Text;
comm.Parameters["@性别"].Value=ddlSex.SelectedValue.ToString();
comm.Parameters["@身份证"].Value=txtIdentity.Text;
comm.Parameters["@生日"].Value="1987-10-07";
comm.Parameters["@婚姻状况"].Value=ddlMarriage.SelectedValue.ToString();
comm.Parameters["@家庭成员人数"].Value=ddlFamily.SelectedValue.ToString();
comm.Parameters["@血型"].Value=ddlBlood.SelectedValue.ToString();
comm.Parameters["@兴趣爱好"].Value=txtInterest.Text;
comm.Parameters["@家庭地址"].Value=txtAddress.Text;
comm.Parameters["@邮编"].Value=txtPostcode.Text;
comm.Parameters["@家庭电话"].Value=txtTel.Text;
comm.Parameters["@手机"].Value=txtMobile.Text;
comm.Parameters["@办公电话"].Value=txtOfficeTel.Text;
comm.Parameters["@电子信箱"].Value=txtEmail.Text;
comm.Parameters["@网址"].Value=txtSite.Text;
comm.Parameters["@学历"].Value=ddlCert.SelectedValue.ToString();
comm.Parameters["@职业"].Value=ddlJobType.SelectedValue.ToString();
comm.Parameters["@工作单位"].Value=txtUnit.Text;
comm.Parameters["@职务"].Value=txtPost.Text;
comm.Parameters["@驾驶证类型"].Value=txtLicense.Text;
comm.Parameters["@发证日期"].Value=txtLicenseDate.Text;
comm.Parameters["@发证单位"].Value=txtLicenseUnit.Text;
comm.Parameters["@驾驶证年审日期"].Value=txtLicenseCheckDate.Text;
comm.Parameters["@驾驶证年审提醒"].Value="1";//chkLicense.Checked.ToString();
comm.Parameters["@其他联系人"].Value=txtContact.Text;
comm.Parameters["@与本人关系"].Value=txtRelation.Text;
comm.Parameters["@联系人电话"].Value=txtTel2.Text;
comm.Parameters["@联系人地址"].Value=txtAddress2.Text;
comm.Parameters["@备注"].Value=txtStation.Text;
comm.Parameters["@车牌号"].Value=txtCarNo.Text;
comm.Parameters["@品牌"].Value=ddlCarMake.SelectedValue.ToString();
comm.Parameters["@车型"].Value=txtCarType.Text;
comm.Parameters["@颜色"].Value=ddlColor.SelectedValue.ToString();
comm.Parameters["@核定乘客"].Value=txtCapacity.Text;
comm.Parameters["@车辆用途"].Value=ddlCarUsage.SelectedValue.ToString();
comm.Parameters["@所在地区"].Value=txtArea.Text;
comm.Parameters["@车架号"].Value=txtShelf.Text;
comm.Parameters["@发动机号"].Value=txtEngine.Text;
comm.Parameters["@购车日期"].Value=txtBuyDate.Text;
comm.Parameters["@领证日期"].Value=txtCarDate.Text;
comm.Parameters["@车辆年检日期"].Value=txtCarCheckDate.Text;
comm.Parameters["@车辆年检提醒"].Value="1";
comm.Parameters["@季度保养日期"].Value=txtQuarterDate.Text;
comm.Parameters["@季度保养提醒"].Value="1";
comm.Parameters["@养路费到期"].Value=txtRoadDate.Text;
comm.Parameters["@养路费提醒"].Value="1";
comm.Parameters["@保险公司"].Value=ddlInsurer.SelectedValue.ToString();
comm.Parameters["@险种"].Value=txtMemo.Text;
comm.Parameters["@投保日期"].Value=txtInsureDate.Text;
comm.Parameters["@投保年限"].Value=txtInsureYear.Text;
comm.Parameters["@保险到期"].Value=txtInsureDate.Text;
comm.Parameters["@保险到期提醒"].Value="1";
comm.Parameters["@保险代理人"].Value=txtAgent.Text;
comm.Parameters["@代理人电话"].Value=txtAgentTel.Text;
comm.Parameters["@保单号"].Value=txtInsureNo.Text;
comm.Parameters["@保险费"].Value=txtInsureFee.Text;
comm.Parameters["@保险提成"].Value=txtBonus.Text;
comm.Parameters["@本站投保"].Value="1";
comm.Parameters["@录入员"].Value="1";*/


comm.CommandType=CommandType.StoredProcedure;
conn.Open();
SqlDataReader i=comm.ExecuteReader();
conn.Close();

#2


其中有个地方在sql2000里是numeric(9, 2),
而sqldatetype里我用Decimal代替


源错误: 


行 397: comm.CommandType=CommandType.StoredProcedure;
行 398: conn.Open();
行 399: SqlDataReader i=comm.ExecuteReader();
行 400: conn.Close();
行 401: }
 

源文件: c:\inetpub\wwwroot\qfcy\addmember.aspx.cs    行: 399 

堆栈跟踪: 


[FormatException: 输入字符串的格式不正确。]
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
   System.Data.SqlClient.SqlCommand.ExecuteReader()
   QFCY.addMember.btnAdd_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\qfcy\addmember.aspx.cs:399
   System.Web.UI.WebControls.Button.OnClick(EventArgs e)
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   System.Web.UI.Page.ProcessRequestMain()

 

#3


代码太长,分数太少
但是实在没法了
请各位路过的瞄一眼也好
给偶一个意见也行,好让偶慢慢调试啊
都快崩溃了

#4


怎么用中文呢?
跟踪一下,看看输入字符串的什么

#5


楼上的回复感激涕临~~~

这个代码是建立在一个别人的SQL数据库上,原来是中文的,只好也用中文了

跟踪字符串如何看,小弟不才,从vs转到vs.net,跟踪不会。

#6


设置一个断点,监视你的comm的CommandText

#7


观察了下局部变量,都一样
除了那个会费numeric变成float外都一样。
高人指点啊。

#8


chengbo1983(努力学习.Net!(asp.net C#)) 

谢谢你的回复啊,黑暗中看见了光芒。
能否把我代码给你,你帮我调试下?
不是我懒,只是忙了一下午,还是不行。
抓狂啊

#9


好吧,反正我也没事干

#10


应该是字符串和整型的类型转换错误吧
建议楼主单步调试一下,找到错误的那句放上来
因为你的参数太多了,我们又不了解你的数据库中的字段的类型
一时间很难找出错误啊

#11


楼上是好人啊!

不容易啊!

楼主也不要着急,这种问题本身就麻烦,楼主要有心理准备阿!

呵呵

#12


楼上是好人啊!

不容易啊!

楼主也不要着急,这种问题本身就麻烦,楼主要有心理准备阿!

呵呵

#13


多谢帮忙,我在调试看看

chengbo1983(努力学习.Net!(asp.net C#)) ,请放出的email或QQ,呵呵

#14


chengbo@mail02.xhu.edu.cn

#15


1:show出来啊!!!!
2:创建断点啊

#16


+ _value "1982-10-07" System.Object
_version Current System.Data.DataRowVersion
ActualSize <错误: 发生 {System.FormatException} 类型的异常> int
CoercedValue <错误: 发生 {System.FormatException} 类型的异常> System.Object
Collation <未定义的值> System.Data.SqlClient.SqlCollation
DbType Int32 System.Data.DbType
Direction Input System.Data.ParameterDirection
IsNullable false bool
Offset 0 int
ParameterName "@交费年限" string


查到错误源了
这里就发生异常了
我是将字符串"1982-10-07"赋值给datetime类型的。大家有什么办法,谢谢各位的帮助。

#17


上面的错误我改过来的,交费年限是int类型,而我把时间类型赋给它,出错了
现在的提示是
源错误: 


行 397: comm.CommandType=CommandType.StoredProcedure;
行 398: conn.Open();
行 399: comm.ExecuteNonQuery();
行 400: conn.Close();
行 401: }
 

源文件: c:\inetpub\wwwroot\qfcy\addmember.aspx.cs    行: 399 

堆栈跟踪: 


[FormatException: 该字符串未被识别为有效的布尔值。]
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
   System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   QFCY.addMember.btnAdd_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\qfcy\addmember.aspx.cs:399
   System.Web.UI.WebControls.Button.OnClick(EventArgs e)
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   System.Web.UI.Page.ProcessRequestMain()

 

#18


Convert.ToDateTime

#19


Convert.ToDateTime

#20


发这么多代码对你的问题来说并不好,你应该先跟踪,看看哪里不对。
存储过程和程序中用的数据格式应该一样,包括长度。

#21


谢谢各位的帮忙,现在可以确定是出在数据的格式上面了。
但是不知道哪一个。现在没精力跟踪,洗完澡继续。

现在有个不理解的地方是:在SQL2000里,设置数据可以为空,当我把全部参数都设置为NULL时,它却提醒我需要什么什么参数。那数据库里的设置为允许空不是白设了,谢谢。

#22


OK,搞定了
谢谢各位的帮忙。

推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
author-avatar
乐民修德
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有