C# 执行查询语句报错There is no row at position 1.

C# 执行查询语句报错There is no row at position 1.

                                           string SQLZ = "SELECT PROCESS_ID,PDLINE_ID,MACHINE_ID,SHIFT_ID,WORK_DATE FROM  TEST_B  WHERE MANHOUR_ID = '"+manhour_id+"' AND ENABLED='Y'";

                                            DataTable dsTemp_S1 = DBhelp.ExecuteSQL(SQLZ).Tables[0];

不是这句报错吧。。你这个只是取返回的Table,没有和数据行相关。。报这个错应该是你使用的返回表格的Rows属性时报错,Table没有数据行或者只有1行导致的错误

如没有数据或者只有1行,直接dsTemp_S1.Rows[1][0].ToString()获取数据就是报的这个错误

不是这句报错吧。。你这个只是取返回的Table,没有和数据行相关。。报这个错应该是你使用的返回表格的Rows属性时报错,Table没有数据行或者只有1行导致的错误

明显是返回的datatable没内容。

是取返回的Table,没有和数据行相关

楼上说得对,这个不是报错。这条提示信息要你给出position 1的相应的数据,如果这里没数据,那就会出现这个常态性的警示信息。

可以试试用dataGrid控件,自动绑定,多简单?搞清楚了,再自己写自定义的表,不就简单多了。
这是我用dataGrid控件和sqlServer绑定的一个实例,1W4行的数据,也能秒差,性能还是可以的。
图片说明

使用dataGrid,实现与数据库的数据绑定,显示

  public void display()
        {
            url = "server=.;database='register';uid='sa';pwd='sa'";
            connect = new SqlConnection(url);
            connect.Open();
            comboboxtext = comboBox1.Text;//选择表      
            command = "select * from " + comboboxtext;
            adapter = new SqlDataAdapter(command, connect);//
            tables = new DataSet();
            adapter.Fill(tables, comboboxtext);//在dataset中添加行
            dataGridView1.DataSource = tables;//获取显示数据的数据源
            dataGridView1.DataMember = comboboxtext;//显示数据列、表名称
            connect.Close();
        }

调试的时候看下这个sql具体内容是什么,复制下来,手动执行这条sql,看看是否有记录返回呢

如果数据集是dataset ,先判断dataset中的表数量是否大于0
如果大于0
再判断table
行数据要判断是否为空