没有适合查询条件的记录时,DataReader.Read()返回的是false!

解决方案 »

  1.   

    [C#]
    if (myReader.HasRows)
      while (myReader.Read())
        Console.WriteLine("\t{0}\t{1}", myReader.GetInt32(0), myReader.GetString(1));
    else
      Console.WriteLine("No rows returned.");myReader.Close();
      

  2.   

    可以这样:
    if(myDataReader.read())
    {
      ...
    }
    else
    {
      ...
    }
      

  3.   

    /Response.Redirect("index1.aspx");

    //定义语句 
    string mySelectQuery = "SELECT * from COding_table where COdingid='" +TextBox_Account.Text+"' and COpsw='"+TextBox_Pass.Text+"'";
    string myConnString="server=fjw;uid=fjwfjw;pwd=fjwfjw;database=BankOfZH"; //联结
    SqlConnection myConnection = new SqlConnection(myConnString);
    SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
    myConnection.Open();
    //定义DataReader
    SqlDataReader myDataReader;
    //赋与DataReader以结果
    myDataReader=myCommand.ExecuteReader();
    if (myDataReader.Read())
    {
    LB_ERROR.Text="不存在此用户或密码错误";
    LB_ERROR.ForeColor=Color.Red;
    }
    else
    {
    Response.Redirect("index1.aspx");
    }


    //将DataReader与DataGrid进行捆绑
    //show.DataSource=myDataReader;
    //show.DataBind();
               
    //关闭
    myDataReader.Close();
    myConnection.Close();
    }
      

  4.   

    请看看这代码有没有错?
    帐号是:textbox_account  密码是:textbox_pass我在里面不输入东西! 他就跳到index1.aspx
    我输入了东西!他什么反应都没有!
    不明白
      

  5.   

    if (myDataReader.Read())应该改为if (!myDataReader.Read())
    不过问题是我不输入东西! read()才返回false!当我输入任何东西(包括错误的信息)的时候!他没反应~
    不知道是不是我的sql语句有错误! 
    请指教一下! 谢谢~
      

  6.   

    if mydr.read=false....没有记录处理
    else
    ...aaaa=mydr(0)
    endif
      

  7.   

    试试这个:
    if (myDataReader.HasRows){  Response.Redirect("index1.aspx");
    }
    else{
    LB_ERROR.Text="不存在此用户或密码错误";
    LB_ERROR.ForeColor=Color.Red;}
      

  8.   

    myDataReader.HasRows仅在 .NET Framework 1.1 版中受支持。
      

  9.   

    .net 2003 可以用if (myDataReader.HasRows){...}
      

  10.   

    if (!myDataReader.Read())
    没记录时为false
      

  11.   

    if (myDataReader.Read())        //判断是否有记录,有记录则运行
    同理
    if (!myDataReader.Read())        //判断是否为空,为空则运行
      

  12.   

    不行~
    问题依旧!
    是什么回事呢?
    sql语句有错吗?
      

  13.   

    http://www.chinabs.net/aspnet/default.asp?infoid=40
    你看看这片文章
      

  14.   

    数据库名usertable 字段 username(关键字)、password,以下代码经调试已成功:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <%@Page language="C#" Debug="True"%>
    <%@Import Namespace="System.Data"%>
    <%@Import Namespace="System.Data.SqlClient"%>
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <script language="C#" runat="server" >
     SqlConnection MyConnection;
     int rowIndex;
    private void Login_Click(Object sender, EventArgs E) {
       MyConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
       SqlDataAdapter myCommand = new SqlDataAdapter("SELECT * FROM usertable ORDER BY username ASC", MyConnection);
       DataSet ds = new DataSet();
       myCommand.Fill(ds, "usertable");
    DataView dv=new DataView(ds.Tables["usertable"],"","username",DataViewRowState.CurrentRows);
        rowIndex = dv.Find(username.Text);
     if (rowIndex == -1){
                     label1.Text = "不存在此用户!";        
    }    else{
    DataRowView dr;
    dr=dv[rowIndex];
    if (dr["password"].ToString() ==  password.Text){
     Response.Redirect("index1.aspx");
    }
    else{
       label1.Text = "口令错误!";
    }
    }

    </script>
    </head>
    <body>
    <form runat="server">
    用户:<asp:textbox ID="username" runat="server"/><br/>
    口令:<asp:textbox ID="password" runat="server"/>
    <asp:button ID="submit" Text="提交" OnClick="Login_Click" runat="server"/>
    <asp:label ID="label1"  runat="server"></asp:label>
    </form>
    </body>
    </html>
      

  15.   

    谢谢各位!不过验证问题是解决了!可是出现了新的问题!
    我的代码如下:private void Button_Login_Click(object sender, System.EventArgs e)
    {
    //Response.Redirect("index1.aspx");
    int rowIndex;
    //定义语句 
    string mySelectQuery = "SELECT * from COding_table order by COdingid asc";
    string myConnString="server=(LOCAL);uid=fjwfjwfjw;pwd=fjwfjw;database=BankOfZH"; //联结
    SqlConnection myConnection = new SqlConnection(myConnString);
    SqlDataAdapter myCommand = new SqlDataAdapter(mySelectQuery, myConnection);

    //DataSet
    DataSet ds = new DataSet();
    myCommand.Fill(ds,"COding_table");
    DataView dv=new DataView(ds.Tables["COding_table"],"","COdingid",DataViewRowState.CurrentRows);
    rowIndex = dv.Find(TextBox_Account.Text);
    if (rowIndex == -1)
    {
    LB_ERROR.Text = "不存在此用户!";        
    } else
    {
    DataRowView dr;
    dr=dv[rowIndex];
    if (TextBox_Pass.Text.Equals(dr["COpsw"].ToString())) ///问题所在*************************
    {
    Response.Redirect("index1.aspx");
    }
    else
    {
    LB_ERROR.Text = dr["COpsw"].ToString();
    }
    }
    }问题出现在if (TextBox_Pass.Text.Equals(dr["COpsw"].ToString())) 这个判断上!
    无论是我改为if (textBox_Pass.Text==dr["COpse"].ToString())后他都是返回false!执行else下面的语句!后来我显示出那password!即使我输入的密码和显示的一样!他也只执行else下面的语句!不明白!我数据哭里的password字段是char 字长为10
    请大家指点一下!
    麻烦了!
      

  16.   

    换成
    if (dr.GetString("COpse")==(string)textBox_Pass.Text)
      

  17.   

    dim dt as datatable()
    mycomm.commandtext="select ...."
    myadp.fill(dt)
    if dt.rows.count<=0 then
     msgbox("NO record")
    end if
      

  18.   

    应该是 if (!myDataReader.Read())而不是if(myDataReaer.read())少了一个"!"号,就相反了
      

  19.   

    写存储过程用@@ROWCOUNT或通过return 可以彻底解决你的问题。
      

  20.   

    其实你只需要知道有没有记录的话,不需要这么麻烦阿
    只要count一下就可以了
    select count(*) from table where ...
    然后在程序里
    int count = (int)YourCommand.ExecuteScalar();
    直接判断count值就可以了
      

  21.   

    if(mydatareader.Read()==true)
    {
       do you want to do;
    }
    else
       return;