C# 在VSC 2010中从access数据库获取下一行

C# 在VSC 2010中从access数据库获取下一行,c#,C#,我尝试了以下代码,但它没有为一个或多个必需参数提供任何值,因此引发异常 protected void Button2_Click(object sender, EventArgs e) { string constr = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\yogi\Documents\mydb.mdb"; string cmdstr1 = "select count(*

我尝试了以下代码,但它没有为一个或多个必需参数提供任何值,因此引发异常

protected void Button2_Click(object sender, EventArgs e)
{
      string constr = @"Provider=Microsoft.Jet.OLEDB.4.0; Data      
      Source=C:\Users\yogi\Documents\mydb.mdb";
      string cmdstr1 = "select count(*) from quant_level1";
      OleDbConnection con1 = new OleDbConnection(constr);
      OleDbCommand com1 = new OleDbCommand(cmdstr1, con1);
      con1.Open();
      int count = (int) com1.ExecuteScalar();
      int i = 2;
      while (i <= count)
      {
           string cmdstr = "select * from quant_level1 where id = i";
           OleDbConnection con = new OleDbConnection(constr);
           OleDbCommand com = new OleDbCommand(cmdstr, con);
           con.Open();
           OleDbDataReader reader = com.ExecuteReader();
           reader.Read();
           label1.Text = String.Format("{0}", reader[1]);
           RadioButton1.Text = String.Format("{0}", reader[2]);
           RadioButton2.Text = String.Format("{0}", reader[3]);
           RadioButton3.Text = String.Format("{0}", reader[4]);
           RadioButton4.Text = String.Format("{0}", reader[5]);
           con.Close();
           i++;
      }
      con1.Close();
}

select语句中有一个错误: 您正在尝试选择一个未提供的ID

字符串cmdstr=select*from quant_level1,其中id=i; 您的select语句应该如下所示:

string cmdstr = "select * from quant_level1 where id = " + i;

循环计数器在字符串中。它不会被自动替换。

因为每次单击按钮都要获取下一行

int i=2;
protected void Button2_Click(object sender, EventArgs e)
{
      string constr = @"Provider=Microsoft.Jet.OLEDB.4.0; Data      
      Source=C:\Users\yogi\Documents\mydb.mdb";
      string cmdstr1 = "select * from quant_level1 where id ="+i;
      OleDbConnection con1 = new OleDbConnection(constr);
      OleDbCommand com1 = new OleDbCommand(cmdstr1, con1);
      con1.Open();
      if(reader.Read())
      {
           label1.Text = String.Format("{0}", reader[1]);
           RadioButton1.Text = String.Format("{0}", reader[2]);
           RadioButton2.Text = String.Format("{0}", reader[3]);
           RadioButton3.Text = String.Format("{0}", reader[4]);
           RadioButton4.Text = String.Format("{0}", reader[5]);
           i++;
      }
      con1.Close();
}
试试这个-

仅在使用Web应用程序时工作


在你的情况下,这会起作用的。快乐编码:

您想在这里做什么?我正在尝试获取数据库的下一行。RadioButton1.文本将被分配表中最后一行的数据。这是您想要的吗..请澄清您的问题不,我想每次单击按钮获取下一行。谢谢您的回答。没问题-但您应该澄清您的问题问题基本上,您是在将最后一个表项分配给控件-这真的是您想要做的吗?不,我不想这样做。我想每次单击按钮时获取下一行。请告诉我如何执行此操作?请参阅Anirudh解决方案-这将完成您试图实现的操作。
protected void Button2_Click(object sender, EventArgs e)
{
    int i;
    if (ViewState["count"] != null)
        i = Convert.ToInt32(ViewState["count"].ToString());
    else
        i = 2; // assuming that it is your starting point as given in question

    string constr = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\yogi\Documents\mydb.mdb";
    string cmdstr1 = "select count(*) from quant_level1";
    OleDbConnection con1 = new OleDbConnection(constr);
    OleDbCommand com1 = new OleDbCommand(cmdstr1, con1);
    con1.Open();
    int count = (int)com1.ExecuteScalar();

    if (i < count)
    {
        string cmdstr = "select * from quant_level1 where id = i";
        OleDbConnection con = new OleDbConnection(constr);
        OleDbCommand com = new OleDbCommand(cmdstr, con);
        con.Open();
        OleDbDataReader reader = com.ExecuteReader();
        reader.Read();
        label1.Text = String.Format("{0}", reader[1]);
        RadioButton1.Text = String.Format("{0}", reader[2]);
        RadioButton2.Text = String.Format("{0}", reader[3]);
        RadioButton3.Text = String.Format("{0}", reader[4]);
        RadioButton4.Text = String.Format("{0}", reader[5]);
        con.Close();
        i++;
        ViewState["count"] = i.ToString();
    }
    con1.Close();
}