asp.net查询返回值不正确

sicau_taozi 2016-06-02 09:24:59
想做一个登录的页面,可是这个数据库查询返回的结果是-1,在我的帐号和密码输入正确的情况下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MySql.Data.MySqlClient;
using MySql.Data;

public partial class index : System.Web.UI.Page
{
public int getCount(string sqlstr)
{
string conn = "Data Source=localhost;User ID=root;Password=;DataBase=xxaqjs;Charset=gb2312;";
MySqlConnection con = new MySqlConnection(conn);
con.Open();
MySqlCommand com = new MySqlCommand(sqlstr, con);
return com.ExecuteNonQuery();
}
protected void Button1_Click(object sender, EventArgs e)
{
int log;
log=getCount("select count(*) from xxfz where fz_name='" + TextBox1.Text + "' and pwd='" + TextBox2.Text + "'");
if(log==1)
{
Response.Write("<script>alert('yes')</script>");
}
else
{
Response.Write("<script>alert('no')</script>");
}
}
}

...全文
217 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2016-06-03
  • 打赏
  • 举报
回复
使用(int)ExecuteScalar
  • 打赏
  • 举报
回复
var num = Convert.ToInt32(com.ExecuteScalar());
conn.Close();
return num;
sicau_taozi 2016-06-03
  • 打赏
  • 举报
回复
引用 1 楼 three流垃圾菜鸟的回复:
return com.ExecuteNonQuery(); 改成 return (int)com.ExecuteScalar();
试了一下,会报错。指定的转换无效。
sicau_taozi 2016-06-03
  • 打赏
  • 举报
回复
 
public string login()
    {
        DropDownList1.Items.Clear();
        string conn = "Data Source=localhost;User ID=root;Password=960329;DataBase=xxaqjs;";
        MySqlConnection con = new MySqlConnection(conn);
        con.Open();
        MySqlCommand com = new MySqlCommand("select * from xxfz", con);
        MySqlDataReader rd;
        rd = com.ExecuteReader();
        while(rd.Read())
        {
            if(rd["fz_name"].ToString()==TextBox1.Text && rd["pwd"].ToString() == TextBox2.Text)
            {
                Response.Write("<script>alert('yes')</script>");
                return rd["fz_name"].ToString();
            }
            else
            {
                Response.Write("<script>alert('no')</script>");
                return "1";
            }
        }
        return "0";
    }
谢谢大家的帮助,我改变了一下我的思路,现在已经可以了,能实现我所需要的效果,作为初学者給大家添麻烦了。
baidu_34165517 2016-06-03
  • 打赏
  • 举报
回复
首先,ExecuteNonQuery()返回的是影响的行数,单纯的select返回值是-1 只有update insert等会改变数据的才会有值变化。 其次 ExecuteScalar() 的结果是一个object 是可空的 直接(int)肯定是不行的
  • 打赏
  • 举报
回复
不管出现什么问题,自己动手之后才会真正解决问题。有些人动不动就在论坛问“求问各种可能性”,那么他应该把工资也分给别人一半。
  • 打赏
  • 举报
回复
引用 4 楼 sicau_taozi 的回复:
[quote=引用 1 楼 three流垃圾菜鸟的回复:]return com.ExecuteNonQuery(); 改成 return (int)com.ExecuteScalar();
试了一下,会报错。指定的转换无效。[/quote]既然你能100%地重现异常,那么应该贴出你在抛出异常时所调试 com.ExecuteScalar() 的截屏画面啊?! 这不应该总要别人告诉你的。
Lightning-McQueen 2016-06-02
  • 打赏
  • 举报
回复
1#正解 123
Lightning-McQueen 2016-06-02
  • 打赏
  • 举报
回复
ExecuteNonQuery 方法用于返回受影响的行数,你的sql语句是select
mlxwl2013 2016-06-02
  • 打赏
  • 举报
回复
return com.ExecuteNonQuery(); 改成 return (int)com.ExecuteScalar();

62,270

社区成员

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

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

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

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