Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中查找数据库中的下一条记录_C#_Sql Server_Database - Fatal编程技术网

C# 在C中查找数据库中的下一条记录

C# 在C中查找数据库中的下一条记录,c#,sql-server,database,C#,Sql Server,Database,我想通过单击按钮显示下一条记录。这是我的密码 private DataTable GetData() { DataTable dt = new DataTable(); SqlConnection connection = new SqlConnection(connectionString); try { connection.Open();

我想通过单击按钮显示下一条记录。这是我的密码

private DataTable GetData()
        {
            DataTable dt = new DataTable();

            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                SqlCommand sqlCmd = new SqlCommand("Select * From Data", connection);
                SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);

                sqlDa.Fill(dt);
            }
            catch (System.Data.SqlClient.SqlException ex)
            {

            }
            finally
            {
                connection.Close();
            }
            return dt;
        }


        public Form1()
        {

            DataTable dt = GetData();
            if (dt.Rows.Count > 0)
            {
                // Populate the TextBox with the first entry on page load
                txtName.Text = dt.Rows[0]["Name"].ToString();
            }
        }
但是我在txtName.Text=dt.Rows[0][Name]上遇到了一个异常; 对象引用不是对象的集合


请帮助我

首先要检查数据库端,是否真的有列作为名称,可能是sql开发人员或您自己使用了别名:

选择名称作为NotAnotherName,ID来自

第二件事是在读取它的内容之前,检查它是否为null,或者列是否包含与null不同的DBNull.value,因此:

在检查行数是否大于0后,可以添加if。

加载项null检查txtName和dt。行[0][Name]:

如果dt.Rows[0][Name]为空,则在数据库中为空。如果这不是预期的,请调试数据库插入代码


如果txtName为null,这是因为您在初始化txtName之前执行此代码。确保您的代码在txtName初始化之前不会执行。

调试器会说什么-什么是null?结果集的Name值必须为null。只需添加一个空检查。或者,txtName为null。是否检查了Name列是否存在且不为null?进行了编辑以删除数据库连接信息,因为您有用户名和pwd。@JonH-c开发人员从未对一次性对象使用try-catch finally。在示例中,他显示他实际上正在检查是否有行@ChristiaanV-有一行并不意味着该列不包含空值。该列必须存在。如果该列不存在,则异常将是ArgumentException,而不是NullReferenceException。@gilly3-该列必须存在,但内容可能不存在。@gilly3-可能他需要检查Name!=DBNull.VALUE此代码正在工作,但txtName.Text中没有数据。@BilasGhar-将代码移出构造函数并放入加载事件处理程序。查看对我答案的编辑。@gilly3为什么要检查txtName=Null—OP似乎要覆盖该值。如果dt.Rows.Count>0{ifdt.Rows[0][Name]!=null…@JonH-OP希望设置txtName的文本属性值,而不是覆盖txtName。@gilly3-输入if时会这样做,不需要检查txtName!=null,这没有意义。
If (dt.Rows[0]["Name"] != DBNull.Value)
  //proceed
if (dt.Rows.Count > 0 && txtName != null && dt.Rows[0]["Name"] != null) 
{
    txtName.Text = dt.Rows[0]["Name"].ToString(); 
}