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();
}