天拉。救救我。我要疯了
Default.aspx页面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataGrid1.DataSource =DbSqlOperation.GetDataReader("Select * from Menu");
DataGrid1.DataBind();
DbSqlOperation.CloseCon();
}
}
----------------------------------------------------------------------
DbSqlOperation.cs页面
public class DbSqlOperation
{
protected static OleDbConnection Con = Dbcon.CreateCon();
protected static OleDbCommand Cmd = new OleDbCommand();
protected static OleDbDataReader dr = null;
public DbSqlOperation()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 打开数据库连接
/// </summary>
private static void OpenCon()
{
if (Con.State == ConnectionState.Closed)
{
try
{
Con.Open();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
}
/// <summary>
/// 关闭连接,并且释放连接和命令对象
/// </summary>
public static void CloseCon()
{
if (Con.State == ConnectionState.Open)
{
Con.Close();
Con.Dispose();
Cmd.Dispose();
}
}
/// <summary>
/// 释放OledbDataReader对象
/// </summary>
public static void CloseDataReader()
{
dr.Close();
dr.Dispose();
}
/// <summary>
/// 执行SQL语句,返回OleDbDataReader
/// </summary>
/// <param name="sql">string</param>
/// <returns>OleDbDataReader</returns>
public static OleDbDataReader GetDataReader(string sql)
{
Cmd.Connection = Con;
Cmd.CommandType = CommandType.Text;
Cmd.CommandText = sql;
try
{
OpenCon();
dr = Cmd.ExecuteReader();
return dr;
}
catch (Exception e)
{
CloseCon();
throw new Exception(e.Message);
}
}
/// <summary>
/// 执行SQL语句,返回DataSet
/// </summary>
/// <param name="sql">string</param>
/// <returns>DataSet</returns>
public static DataSet GetDataSet(string sql)
{
DataSet ds = new DataSet();
OleDbDataAdapter sda = new OleDbDataAdapter();
Cmd.Connection = Con;
Cmd.CommandType = CommandType.Text;
Cmd.CommandText = sql;
try
{
OpenCon();
sda.SelectCommand = Cmd;
sda.Fill(ds);
return ds;
}
catch(Exception e)
{
throw new Exception(e.Message);
}
finally
{
CloseCon();
sda.Dispose();
}
}
----------------------------------------------------------------------
我要疯了。 老是调试..老是数据库连接的问题。第一次可以连.
刷新一下。就报错.我要疯了。哪个大侠解答一下。我全部的分都给了
问题点数:70、回复次数:13Top
1 楼netharry()回复于 2006-12-03 22:45:52 得分 0
DataGrid能直接绑定一个OleDbDataReader对象吗?我第一次这么看到。Top
2 楼hy_lihuan(我想早恋,可是已经晚了)回复于 2006-12-03 22:53:07 得分 0
建议去下载一个sqlHelper的程序下来用一下好了,那就不用自己去写数据库的连接了Top
3 楼webhermit(杀人眨一眼)回复于 2006-12-03 22:54:26 得分 0
楼上的,可以,我就经常这样用!Top
4 楼mextb1860()回复于 2006-12-03 22:56:13 得分 0
大哥们.. 帮我解决下好吗?
我要疯了Top
5 楼Edisoncat(http://www.Edisonliu.com)回复于 2006-12-03 22:57:27 得分 0
把 static去掉 试下Top
6 楼mextb1860()回复于 2006-12-03 22:58:53 得分 0
我的是Access数据库呢Top
7 楼liuqiyc(cyiquil)回复于 2006-12-03 23:24:52 得分 0
public static void CloseCon()
{
if (Con.State == ConnectionState.Open)
{
Con.Close();
Con.Dispose();------------删掉试试
Cmd.Dispose();------------删掉试试
}
}
Top
8 楼mextb1860()回复于 2006-12-04 01:37:53 得分 0
Microsoft Data Access Application Block for .NET 3.0 在哪里下载啊。 谁有简单使用的事例吗??ACCESS数据库也可以用吗Top
9 楼etilm(周贤)回复于 2006-12-04 08:22:16 得分 0
晕,长代码Top
10 楼tete(N多Flash-www.ndflash.com)回复于 2006-12-04 08:25:33 得分 0
把错误代码贴出来咧Top
11 楼keystudio(抽刀断水)回复于 2006-12-04 08:57:27 得分 0
第一次可以连.
刷新一下。就报错.
if (!IsPostBack)
{
DataGrid1.DataSource =DbSqlOperation.GetDataReader("Select * from Menu");
DataGrid1.DataBind();
DbSqlOperation.CloseCon();
}
---------------------------------
去掉if (!IsPostBack)
{}Top
12 楼kui1015(飞奔在孤独中)回复于 2006-12-04 09:20:40 得分 0
^
|Top
13 楼knifesky(有事烧纸)回复于 2006-12-04 09:29:48 得分 70
if(使用GetDataSet方法的话就不出错)
{
//DataApater自动管理连接。
问题一定出在你的DbSqlOperation.CloseCon()方法上,或者说,根本不应该这么用!
}
else
{
我也不知道了.
}
还有关于静态方法,感觉你把con、cmd等都设置成静态变量是为了调试通过(静态方法只能引用静态变量),所以感觉这么写不是特别合理,感觉比较怪异!Top




