我把连接数据库的代码做成了一个类。现在的问题是如何在frm中使用完再关闭它!
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
namespace WindowsApplication1.DoDatabase
{
class ConDb
{
//连接数据库
public static OleDbConnection Getconnection()
{
string con_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\程序\考勤\att2000.mdb";
OleDbConnection con=new OleDbConnection(con_str);
con.Open();
return con;
}
//返回一个表
public static DataTable GetDataTable(string con_str)
{
OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str,Getconnection());
DataTable con_table = new DataTable();
con_ad.Fill(con_table);
return con_table;
}
//关闭连接
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
namespace WindowsApplication1.DoDatabase
{
class ConDb
{
//连接数据库
public static OleDbConnection Getconnection()
{
string con_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\程序\考勤\att2000.mdb";
OleDbConnection con=new OleDbConnection(con_str);
con.Open();
return con;
}
//返回一个表
public static DataTable GetDataTable(string con_str)
{
OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str,Getconnection());
DataTable con_table = new DataTable();
con_ad.Fill(con_table);
return con_table;
}
//关闭连接
}
}
在form调用类属性。close方法关闭
也可以在你写的数据库操作类ConDb中写个关闭的方法掉用一下con。close()
{
OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str,Getconnection());
DataTable con_table = new DataTable();
con_ad.Fill(con_table);
return con_table;
//关闭连接
}
{
private static OleDbConnection _Conn; //连接数据库
public static OleDbConnection Getconnection()
{
string con_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\程序\考勤\att2000.mdb";
_Conn=new OleDbConnection(con_str);
_Conn.Open();
return _Conn;
}
//返回一个表
public static DataTable GetDataTable(string con_str)
{
OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str,Getconnection());
DataTable con_table = new DataTable();
con_ad.Fill(con_table);
return con_table;
}
//关闭连接
public static void CloseConn()
{
_Conn.Close();
}
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
namespace WindowsApplication1.DoDatabase
{
class ConDb
{
private OleDbConnection con;
//连接数据库
public static OleDbConnection Getconnection()
{
string con_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\程序\考勤\att2000.mdb";
con=new OleDbConnection(con_str);
con.Open();
return con;
}
//返回一个表
public static DataTable GetDataTable(string con_str)
{
OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str,Getconnection());
DataTable con_table = new DataTable();
con_ad.Fill(con_table);
return con_table;
}
//关闭连接
public static void closeconnection()
{
con.close();
}
}
}
其它需要打开连接的方法中,用try...catch...finally,finally中关闭连接。
GetDataTable()方法中适配器会自动维护连接状态,可以不需要手动打开再关闭
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
namespace WindowsApplication1.DoDatabase
{
class ConDb
{
//连接数据库
public static OleDbConnection Getconnection()
{ string con_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\程序\考勤\att2000.mdb";
OleDbConnection con = new OleDbConnection(con_str);
return con; }
//返回一个表
public static DataTable GetDataTable(string con_str)
{
OleDbDataAdapter con_ad = new OleDbDataAdapter(con_str, Getconnection());
DataTable con_table = new DataTable();
con_ad.Fill(con_table);
return con_table; }
// 事例
public static int Insert(string sql)
{
int result;
OleDbCommand cmd = new OleDbCommand(sql, Getconnection());
cmd.Connection.Open();
result = cmd.ExecuteNonQuery();
cmd.Connection.Close();
return result;
}
}
}
OleDbConnection con=new OleDbConnection(con_str);
定义为类的成员变量,不在方法中定义就可以了。
例如连接原来是关闭的,它会在读取数据前,自动打开连接,然后读取数据完毕后,关闭连接,使其恢复到原本关闭的状态。所以你可以不手工打开连接,让SqlDataAdapter自动处理