异常详细信息: System.FormatException: 输入字符串的格式不正确。求帮忙

baidu_16689363 2014-06-19 05:25:57
异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误:


行 24: conn.Open();
行 25: OleDbCommand mycommand = new OleDbCommand("select * from users where name='" + name.Text + "' and password='" + pwd.Text + "'", conn);
行 26: int count = int.Parse(mycommand.ExecuteScalar().ToString());
行 27:
行 28: if (count > 0)

源文件: c:\Users\j\Desktop\网站\网站\Login.aspx.cs 行: 26

堆栈跟踪:


[FormatException: 输入字符串的格式不正确。]
System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +10896279
System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +145
System.Int32.Parse(String s) +23
Login.Button1_Click(Object sender, EventArgs e) in c:\Users\j\Desktop\网站\网站\Login.aspx.cs:26
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9752554
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +196
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724
...全文
1726 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
telankes2000 2014-06-20
  • 打赏
  • 举报
回复
从楼主的sql语句来看是要查询一张表 要查询整张表的话需要用DataSet来填充 从楼主的需求来看是验证用户登录的 那么sql语句可改成 select count(1) from users where name='" + name.Text + "' and password='" + pwd.Text + "' 这样调用ExecuteScalar就没有问题了
schyu1314 2014-06-20
  • 打赏
  • 举报
回复
引用 3 楼 netajax1 的回复:

select * from users 返回的是结果集
mycommand.ExecuteScalar()查询返回第一列值
怎么能转换成int类型
要么改成select d(需要返回的int类型字段)from users
+1
踏平扶桑 2014-06-20
  • 打赏
  • 举报
回复
int count = int.Parse(mycommand.ExecuteScalar().ToString()); 换成 int count=0; int.TryParse(mycommand.ExecuteScalar().ToString(),out count); 这样当第一行第一列没数据的时候 会返回0 否则会尝试把数据转成INT
GT7466 2014-06-20
  • 打赏
  • 举报
回复
mycommand.ExecuteScalar() 返回的是第一行第一列的数据 int.Parse(mycommand.ExecuteScalar().ToString()) 这里格式会错误

//这句sql改成count(*),应该就能满足你的场景了
 OleDbCommand mycommand = new OleDbCommand("select  count(*)  from users where name='" + name.Text + "' and password='" + pwd.Text + "'", conn);

netajax1 2014-06-20
  • 打赏
  • 举报
回复

select * from users 返回的是结果集
mycommand.ExecuteScalar()查询返回第一列值
怎么能转换成int类型
要么改成select d(需要返回的int类型字段)from users
wangnaisheng 2014-06-20
  • 打赏
  • 举报
回复
行 25: OleDbCommand mycommand = new OleDbCommand("select * from users where name='" + name.Text + "' and password='" + pwd.Text + "'", conn); 有问题,你可以把select * from users where name='" + name.Text + "' and password='" + pwd.Text + "'" 提出来。在数据库中试试
bdmh 2014-06-19
  • 打赏
  • 举报
回复
字符串不能被转为数字,格式不对,调试,看看字符串什么东西

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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