编译出现异常,求助!

ADO_NET 2005-05-11 07:50:43
string strconn=ConfigurationSettings.AppSettings["dsn"];
SqlConnection cn=new SqlConnection(strconn);
cn.Open();

SqlCommand cm=new SqlCommand("useradd",cn);
cm.CommandType=CommandType.StoredProcedure;

cm.Parameters.Add("@UID",SqlDbType.VarChar);
cm.Parameters.Add("@UPassword",SqlDbType.VarChar);
cm.Parameters.Add("@UQuestion",SqlDbType.VarChar);
cm.Parameters.Add("@UAnswer",SqlDbType.VarChar);
cm.Parameters.Add("@USex",SqlDbType.Bit);
cm.Parameters.Add("@UEmail",SqlDbType.VarChar);
cm.Parameters.Add("@UCityID",SqlDbType.Int);

cm.Parameters["@UID"].Value=tbx_uid.Text.ToString();
cm.Parameters["@UPassword"].Value=tbx_upassword.Text.ToString();
cm.Parameters["@UQuestion"].Value=tbx_question.Text.ToString();
cm.Parameters["@UAnswer"].Value=tbx_answer.Text.ToString();
cm.Parameters["@USex"].Value=ddl_sex.SelectedItem.Value.ToString();
cm.Parameters["@UEmail"].Value=tbx_email.Text.ToString();
cm.Parameters["@UCityID"].Value=tbx_city.Text.ToString();

cm.ExecuteNonQuery();

cn.Close();

存储过程为:

CREATE procedure adduser
@UID varchar,
@UPassword varchar,
@UPower int,
@UQuestion varchar,
@UAnswer varchar,
@USex bit,
@UEmail varchar,
@UCityID int
AS
insert into Users(UID,UPassword,UPower,UQuestion,UAnswer,USex,UEmail,UCityID) values
(@UID,
@UPassword,
2,
@UQuestion,
@UAnswer,
@USex,
@UEmail,
@UCityID
)
GO



异常详细信息: System.FormatException: 该字符串未被识别为有效的布尔值。

源错误:


行 116: cm.Parameters["@UCityID"].Value=tbx_city.Text.ToString();
行 117:
行 118: cm.ExecuteNonQuery(); //此行编译时为红色显示
行 119:
行 120: cn.Close();

...全文
83 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
guopeng_028 2005-05-11
  • 打赏
  • 举报
回复
这段代码我没有测试
分析
你定义的变量有些本来就是字符串
所以没有必要加ToString();吧
我一向写时都不习惯加;
不知道这样对不对

原因也可能就在这里
Bit是布尔类型的
你将他转为String
可能会出问题吧

初步分析为这样 你试一下
ADO_NET 2005-05-11
  • 打赏
  • 举报
回复
错误应该是出了那 布而变量那里
ADO_NET 2005-05-11
  • 打赏
  • 举报
回复
该字符串未被识别为有效的布尔值。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.FormatException: 该字符串未被识别为有效的布尔值。

源错误:


行 116: cm.Parameters["@UCityID"].Value=tbx_city.Text.ToString();
行 117:
行 118: cm.ExecuteNonQuery();
行 119:
行 120: cn.Close();


源文件: c:\inetpub\wwwroot\会员管理系统\register.aspx.cs 行: 118

堆栈跟踪:


[FormatException: 该字符串未被识别为有效的布尔值。]
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
会员管理系统.Register.tbn_submit_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\会员管理系统\register.aspx.cs:118
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()



guopeng_028 2005-05-11
  • 打赏
  • 举报
回复
values
(@UID,
@UPassword,
2,
@UQuestion,
@UAnswer,
@USex,
@UEmail,
@UCityID
)

这里是你的Insert语名的Values值吗 是你贴的有问题还是写的有问题
那个2代表什么意思
huangsuipeng 2005-05-11
  • 打赏
  • 举报
回复
ddl_sex的Item的Value的值的集合是如何的?
orcale 2005-05-11
  • 打赏
  • 举报
回复
你用斷點測試tbx_city.Text.ToString();的值看看是不是有問題
bobseadream 2005-05-11
  • 打赏
  • 举报
回复
问题可能出在@USex bit这里,因为在存储过程中定义的@USex是bit型的变量,但是在赋值时却给它传的是string类型的,所以我认为应该将语句
cm.Parameters["@USex"].Value=ddl_sex.SelectedItem.Value.ToString();
改成:
cm.Parameters["@USex"].Value=(bool)ddl_sex.SelectedItem.Value.ToString();
试试可以不,可以的话告诉我们一声.


110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧