读书人

sql server与c# 一个小疑点,搞了一个晚

发布时间: 2012-01-02 22:40:04 作者: rapoo

sql server与c# 一个小问题,搞了一个晚上,汗死.请高手指点迷津!!!
<%@ Import Namespace= "System.Data " %>
<%@ Import Namespace= "System.Data.SqlClient " %>
<html>
<head runat= "server ">
<title> 无标题页 </title>
</head>

<script language= "c# " runat= "server ">
public void Page_Load(Object sender, EventArgs e)
{
SqlCommand Comm;
DataSet ds;
SqlDataAdapter adap;
SqlConnection objConnection;


string strcomm = "SELECT*FROM Score ";
string strConnection = "Database=geiwei.mdf;Server=.;Trusted_Connection=SSPI;Connect Timeout=30 ";


objConnection = new SqlConnection(strConnection);
adap = new SqlDataAdapter();


Comm = new SqlCommand(strcomm, objConnection);
ds = new DataSet();
adap.Fill(ds, "score ");
dg.DataSource = ds;
dg.DataBind();


}



</script>

<body>
<form id= "form1 " runat= "server ">
<asp:DataGrid ID= "dg " runat= "server ">
</asp:DataGrid>
</form>
</body>
</html>

就这么短一段代码 运行时候出错信息如下:
“/”应用程序中的服务器错误。
--------------------------------------------

在调用“Fill”前,SelectCommand 属性尚未初始化。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: 在调用“Fill”前,SelectCommand 属性尚未初始化。

源错误:

只有在调试模式下进行编译时,生成此未处理异常的源代码才会显示出来。若要启用此功能,请执行以下步骤之一,然后请求 URL:

1. 在产生错误的文件的顶部添加一条“Debug=true”指令。例如:

<%@ Page Language= "C# " Debug= "true " %>

或:

2. 将以下的节添加到应用程序的配置文件中:

<configuration>
<system.web>
<compilation debug= "true "/>
</system.web>
</configuration>

请注意,第二个步骤将使给定应用程序中的所有文件在调试模式下进行编译;第一个步骤仅使该特定文件在调试模式下进行编译。



重要事项: 以调试模式运行应用程序一定会产生内存/性能系统开销。在部署到生产方案之前,应确保应用程序调试已禁用。

堆栈跟踪:


[InvalidOperationException: 在调用“Fill”前,SelectCommand 属性尚未初始化。]
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +194
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +83
ASP._30060_index_aspx.Page_Load(Object sender, EventArgs e) +113
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061




--------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.210


[解决办法]
adap = new SqlDataAdapter(strcomm, objConnection);

用了 SqlDataAdapter 了,SqlCommand 就没用了
需要如上面那样初始化 Adapter 即可
把 Command 的都删除了,不需要

另外
下面绑定处
dg.DataSource = ds;

dg.DataSource = ds.Tables[0].DefaultView;

读书人网 >C#

热点推荐