代码如下:
SqlConnection conn = new SqlConnection("server=192.168.162.8.;uid=sa;pwd=pwd;database=sqq");
SqlCommand cmd=new SqlCommand("GetSqquser1",conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
DataTable dt = new DataTable("sqquser");
SqlDataReader myreader;
// 下面几行是把数据库中的数据显示到GridView
cmd.CommandType=CommandType.StoredProcedure;
da.SelectCommand.Connection.Open();
cmd.ExecuteNonQuery();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
//下面几行是把数据库中的pass字段的值显示在LABEL控件上。如果下面几行屏蔽掉,上面的GridView能正常显示;
//不屏蔽的话就有出错提示
myreader = cmd.ExecuteReader();
Label1.Text=myreader.GetString(3);出错信息:
“/TEST”应用程序中的服务器错误。
--------------------------------------------------------------------------------在没有任何数据时进行无效的读取尝试。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 在没有任何数据时进行无效的读取尝试。源错误: 只有在调试模式下进行编译时,生成此未处理异常的源代码才会显示出来。若要启用此功能,请执行以下步骤之一,然后请求 URL: 1. 在产生错误的文件的顶部添加一条“Debug=true”指令。例如: <%@ Page Language="C#" Debug="true" %>或:2. 将以下的节添加到应用程序的配置文件中:<configuration>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>请注意,第二个步骤将使给定应用程序中的所有文件在调试模式下进行编译;第一个步骤仅使该特定文件在调试模式下进行编译。重要事项: 以调试模式运行应用程序一定会产生内存/性能系统开销。在部署到生产方案之前,应确保应用程序调试已禁用。 堆栈跟踪:
[InvalidOperationException: 在没有任何数据时进行无效的读取尝试。]
System.Data.SqlClient.SqlDataReader.ReadColumn(Int32 i, Boolean setTimeout) +316
System.Data.SqlClient.SqlDataReader.GetString(Int32 i) +16
_Default.Page_Load(Object sender, EventArgs e) +241
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +13
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +43
System.Web.UI.Control.OnLoad(EventArgs e) +80
System.Web.UI.Control.LoadRecursive() +49
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3750
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433
SqlConnection conn = new SqlConnection("server=192.168.162.8.;uid=sa;pwd=pwd;database=sqq");
SqlCommand cmd=new SqlCommand("GetSqquser1",conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
DataTable dt = new DataTable("sqquser");
SqlDataReader myreader;
// 下面几行是把数据库中的数据显示到GridView
cmd.CommandType=CommandType.StoredProcedure;
da.SelectCommand.Connection.Open();
cmd.ExecuteNonQuery();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
//下面几行是把数据库中的pass字段的值显示在LABEL控件上。如果下面几行屏蔽掉,上面的GridView能正常显示;
//不屏蔽的话就有出错提示
myreader = cmd.ExecuteReader();
Label1.Text=myreader.GetString(3);出错信息:
“/TEST”应用程序中的服务器错误。
--------------------------------------------------------------------------------在没有任何数据时进行无效的读取尝试。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 在没有任何数据时进行无效的读取尝试。源错误: 只有在调试模式下进行编译时,生成此未处理异常的源代码才会显示出来。若要启用此功能,请执行以下步骤之一,然后请求 URL: 1. 在产生错误的文件的顶部添加一条“Debug=true”指令。例如: <%@ Page Language="C#" Debug="true" %>或:2. 将以下的节添加到应用程序的配置文件中:<configuration>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>请注意,第二个步骤将使给定应用程序中的所有文件在调试模式下进行编译;第一个步骤仅使该特定文件在调试模式下进行编译。重要事项: 以调试模式运行应用程序一定会产生内存/性能系统开销。在部署到生产方案之前,应确保应用程序调试已禁用。 堆栈跟踪:
[InvalidOperationException: 在没有任何数据时进行无效的读取尝试。]
System.Data.SqlClient.SqlDataReader.ReadColumn(Int32 i, Boolean setTimeout) +316
System.Data.SqlClient.SqlDataReader.GetString(Int32 i) +16
_Default.Page_Load(Object sender, EventArgs e) +241
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +13
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +43
System.Web.UI.Control.OnLoad(EventArgs e) +80
System.Web.UI.Control.LoadRecursive() +49
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3750
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433
if (myreader.HasRows)
Label1.Text = "1";
else
Label1.Text = "2"; //运行后显示的结果是1,说明里面有从数据库中拿到得记录
myreader.Read();
Label1.Text=myreader.GetString(3);
这两句当中加一句
myreader.Read();
SqlDataReader必须在Read()方法后才能调用GetXXX()方法