public class Database //数据库类
{
public OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=user.mdb");
public OleDbCommand comm = new OleDbCommand();
public OleDbDataReader reader;
public Database()
{
try
{
comm.Connection = conn;
conn.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message+"无法打开程序");
///////////////////////////////////////////////关闭程序的语句?????????
}
} ~Database()
{
conn.Close();
} public void ReadSql(String comtxt)
{
if (reader.IsClosed == true) reader.Close();////////这里报错:未将对象引用设置到对象的实例
comm.CommandText = comtxt;
reader = comm.ExecuteReader();
} public object ExecuteSql(String comtxt)
{
if (reader.IsClosed == true) reader.Close();///////////同上报错
comm.CommandText = comtxt;
return comm.ExecuteScalar();
}
}
想问几个问题:
1.怎么在C#里面定义一个全局访问的对象呢,比如说我想打开程序的时候就一直连着数据库,创建一个数据库对象db,所有的Form对数据库的操作都是操作db来进行,不知道有什么方法呢,似乎不能像C++一样在定义后面直接创建一个对象
怎么才能做到对数据库的全局的连接呢2.上面报错(未将对象引用设置到对象的实例)的地方是哪里出了问题呢??3.怎么关闭整个程序,上面如果我try的部分出错,会到catch,但是程序会继续进行,我想直接退出整个程序但是不知道应该用什么4.当有多个Form的时候,似乎从一个Form打开另外一个Form后,再把所有的Form关掉,进程还是在任务管理器的,不知道怎么才能真正把这些Form都关闭,把程序结束掉我是初学者,只知道一点C++的东西,分也不多,希望大家帮忙
{
public OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=user.mdb");
public OleDbCommand comm = new OleDbCommand();
public OleDbDataReader reader;
public Database()
{
try
{
comm.Connection = conn;
conn.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message+"无法打开程序");
///////////////////////////////////////////////关闭程序的语句?????????
}
} ~Database()
{
conn.Close();
} public void ReadSql(String comtxt)
{
if (reader.IsClosed == true) reader.Close();////////这里报错:未将对象引用设置到对象的实例
comm.CommandText = comtxt;
reader = comm.ExecuteReader();
} public object ExecuteSql(String comtxt)
{
if (reader.IsClosed == true) reader.Close();///////////同上报错
comm.CommandText = comtxt;
return comm.ExecuteScalar();
}
}
想问几个问题:
1.怎么在C#里面定义一个全局访问的对象呢,比如说我想打开程序的时候就一直连着数据库,创建一个数据库对象db,所有的Form对数据库的操作都是操作db来进行,不知道有什么方法呢,似乎不能像C++一样在定义后面直接创建一个对象
怎么才能做到对数据库的全局的连接呢2.上面报错(未将对象引用设置到对象的实例)的地方是哪里出了问题呢??3.怎么关闭整个程序,上面如果我try的部分出错,会到catch,但是程序会继续进行,我想直接退出整个程序但是不知道应该用什么4.当有多个Form的时候,似乎从一个Form打开另外一个Form后,再把所有的Form关掉,进程还是在任务管理器的,不知道怎么才能真正把这些Form都关闭,把程序结束掉我是初学者,只知道一点C++的东西,分也不多,希望大家帮忙
2.reader还没实例化呢
3.你的try catch是写在构造函数里的,这个 不建议, 另外catch到错误不让执行下面的就用return;
4.关掉窗体当然没用,要Application,Exit();
对数据库的连接第2个问题...似乎执行一次ExecuteReader之前要保证reader是closed才行,那么我怎么才能保证在执行它之前
reader是close的呢.第一次是不需要close的,但是后面需要了...
如果有些复杂统计数据的情况,需要取过来数据然后再到数据库查询的话,就最好写存储过程,以减少交互次数comm.ExecuteReader();一次就用一个reader,不要声明成全局的,用返回参数返回reader对象