C# SqlDataReader 行/列不存在数据

标签 c# asp.net sqldatareader

我已经离开编程一段时间了,但最近我需要它。

我在使用 SQL Server Compact Edition 4.0(VS2012 内置)的 SQL DataReader 时遇到问题。

string connstring = "Data Source=C:\\..(Path Here)..\\VacationsDB.sdf";
SqlCeConnection conn = new SqlCeConnection(connstring);
string strSQL = "SELECT * FROM Vacation WHERE VacationNo = @val";

using (SqlCeCommand cmd = new SqlCeCommand(strSQL, conn))
{
    //read search value from from text field
    cmd.Parameters.AddWithValue("@val", vacationno_txt.Text);
    conn.Open();

    SqlCeDataReader reader = cmd.ExecuteReader();
    fname_txt.Text = reader.GetString(0);
    mname_txt.Text = reader.GetString(1);
    /*
     * .. snip
     */
    vacationno_txt.Text = reader.GetString(11);
    conn.Close();
}

我一直收到错误: “InvalidOperationException 未处理。行/列不存在数据。”错误指向 fname_txt.Text = reader.GetString(0);

但实际上那里有数据,因为“提交”按钮及其所有代码都在工作,而且我已经在数据库表本身中检查过它。

有什么建议吗?谢谢。

最佳答案

DataReader 在第一行之前开始。

要从第一行读取,请调用一次 Read()
如果没有第一行,Read() 将返回 false

关于C# SqlDataReader 行/列不存在数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18155958/

相关文章:

c# - 如何通过span ID访问span内的ASP控件?

c# - SqlDataReader 显示 InvalidCastException(C# Windows 窗体)

c# - 如何在出现异常时关闭 DataReader

c# - 如何在 .net core 3.0 中并行运行多个 BackgroundService?

c# - 如何将异步方法放入列表中并迭代调用它们?

c# - 带有前导零的 int.Parse()

c# - 实心圆的中点圆算法

c# - Linq 帮助。 int.Contains 和 int == iqueryable 不起作用

针对 v2.0.50727 构建的 ASP.NET 4.5 Web App 混合模式程序集

c# - 在 Asp.net 中检查数据读取器是否有行