• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

谁能帮我看看那错了,一天半了,也找不出错误.

sndy77 2003-09-22 10:34:12
基类
-------------------------------------------------------
using System;
using System.Data;
using System.Data.SqlClient;

namespace lx.qdmap.Data
{
public class DbObject
{
protected SqlConnection Connection;
private string connectionString;
///<summary>
///构造函数,初始化SqlConnection
///</summary>
public DbObject(string newConnectionString)
{
connectionString=newConnectionString;
Connection=new SqlConnection(connectionString);
}

protected string ConnectionString
{
get{return connectionString;}
}
///<summary>
///初始化sqlCommand
///</summary>

private SqlCommand BuildIntCommand(string storedProcName,IDataParameter[] parameters)
{
SqlCommand command=BuildQueryCommand(storedProcName,parameters);

command.Parameters.Add(new SqlParameter("ReturnValue",
SqlDbType.Int,
4, /* Size */
ParameterDirection.ReturnValue,
false, /* is nullable */
0, /* byte precision */
0, /* byte scale */
string.Empty,
DataRowVersion.Default,
null));

return command;
}

private SqlCommand BuildQueryCommand(string storedProcName,IDataParameter[] parameters)
{
SqlCommand command=new SqlCommand(storedProcName,Connection);
command.CommandType=CommandType.StoredProcedure;

foreach(SqlParameter parameter in parameters)
{
command.Parameters.Add(parameter);
}
return command;
}

///<summary>
///运行存贮过程
///</summary>

public DataSet RunProcedure(string storedProcName,IDataParameter[] parameters,string tableName)
{
DataSet dataSet=new DataSet();
Connection.Open();
SqlDataAdapter SqlDA=new SqlDataAdapter();
SqlDA.SelectCommand=BuildQueryCommand(storedProcName,parameters);
SqlDA.Fill(dataSet,tableName);
Connection.Close();

return dataSet;
}


}
}

--------------------------------------------------------------------
codebehind tests.aspx.cs
--------------------------------------------------------------------
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using lx.qdmap.Data;

namespace tests
{
public class tests:Page
{
private DataGrid show;

private DataSet GetSet(int id)
{

SqlParameter[] parameters={new SqlParameter("@NewsCount",SqlDbType.Int,4)};
parameters[0].Value=id;

lx.qdmap.Data.DbObject dbObject=new lx.qdmap.Data.DbObject("server=localhost;database=qdmap;uid=root;pwd=123;");
using(DataSet dataSet=dbObject.RunProcedure("sp_GetNewsList",parameters,"News"))
{
return dataSet;

}
}

private void Page_Load(object sender,System.EventArgs e)
{
if(!Page.IsPostBack)
{

show.DataSource=GetSet(25);
show.DataBind();
}
}
}
}
-------------------------------------------------------------------
页面
-------------------------------------------------------------------
<% @page trace="true" debug="true" language="c#" Inherits="tests.tests" src="../bin/tests.aspx.cs" %>

<html>
<head>
<title>test</title>
</head>
<body>
<form runat="server">
<table><tr><td>
<asp:DataGrid ID="show" runat="server" />
</td></tr></table>
</form>
</body>
</html>

--------------------------------------------------------------
存储过程 sp_GetNewsList
-------------------------------------------------------------
CREATE PROCEDURE sp_GetNewsList
@NewsCount int AS
SELECT * FROM Travelnews WHERE ID=@NewsCount
GO
-------------------------------------------------------------
数据表Travelnews
-------------------------------------------------------------
ID 25
NewsTitle sdfsadf
NewsInfo fsdfsdfsdfsa
NewsTime 2003-9-20
...全文
14 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sndy77 2003-09-22
RE:timmy3310(Tim)
非常感谢,终于解决了。给分。
回复
myadaidarling 2003-09-22
如果不行的话,,应该是你的

private DataSet GetSet(int id)

在页面加载的时候没有加载。。

可以将它放到类中或者在private void InitializeComponent()中加入初始化...
回复
timmy3310 2003-09-22
对于页面控件

由于页面类是代码类的基类,所以代码类当中按照aspx中控件名定义的控件对象要保证子类能够访问,所以必须定义为protected或者public,private是不行的
回复
sndy77 2003-09-22
re:myadaidarling(CCAO)

不行啊。
回复
timmy3310 2003-09-22
对于页面控件

由于页面类是代码类的基类,所以代码类当中按照aspx中控件名定义的控件对象要保证子类能够访问,所以必须定义为protected或者public,private是不行的
回复
timmy3310 2003-09-22
private DataGrid show;

改为:

protected DataGrid show;
回复
myadaidarling 2003-09-22
if(!Page.IsPostBack)
{
DataSet myds = new DataSet();
myds = this.GetSet(25);
show.DataSource=myds;
show.DataBind();
}

试试!!
回复
sweet12345 2003-09-22
根据你的错误信息,应该是没有使用new来实例化你的某些对象,比如sqlcommand,sqlconnection,dataset等等,你找找是不是所有该实例化的对象都被实例化了!
回复
sndy77 2003-09-22
panyee(快乐王子)

帮忙啊,谢谢了!
回复
sndy77 2003-09-22
各位帮忙啊,分不够跟我说啊.
回复
sndy77 2003-09-22
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 33: {
行 34:
行 35: show.DataSource=GetSet(25);
行 36: show.DataBind();
行 37: }


源文件: D:\qdmap\bin\tests.aspx.cs 行: 35

堆栈跟踪:


[NullReferenceException: 未将对象引用设置到对象的实例。]
tests.tests.Page_Load(Object sender, EventArgs e) in D:\qdmap\bin\tests.aspx.cs:35
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731


回复
gshope 2003-09-22
哪一行报错?什么错误信息?
回复
流梓 2003-09-22
什么错误?
回复
xhzuo 2003-09-22
错误信息贴出来啊??
回复
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2003-09-22 10:34
社区公告
暂无公告