c#实现简单工厂—数据库连接
2007-06-10 15:26
501 查看
通过简单factory,把抽象类——数据库连接,实现为针对不同数据库(sqlserver、oracle等)的数据连接子类,并在子类实现对数据集的填充、执行各种sql语句的方法。
数据连接工厂类
using System;
using System.Data;
using System.Configuration;
public class dbFactory
{
public dbFactory() { }
public dbConnect CreatConnect(string contype, string connectstring)
{
if (contype == "oracle")
{
return new dbOracle(connectstring);
}
else if (contype == "sqlserver")
{
return new dbSqlserver(connectstring);
}
else
{
contype = "oracle";
return new dbOracle(connectstring);
}
}
}
数据连接抽象类
using System;
using System.Data;
using System.Configuration;
public abstract class dbConnect
{
public dbConnect() { }
public abstract string Connect();
public abstract string CheckConn();//数据连接检查
public abstract string FillDataset(string strsql, string TableName, DataSet DS);
//填充dataset
public abstract string DeleteBySql(string strsql);
//提交删除命令
public abstract string UpdateBySql(string strsql);//提交更新命令
public abstract string InsertBySql(string strsql);//提交插入命令
}
Oracle连接子类
using System;
using System.Data;
using System.Configuration;
using System.Data.OracleClient;
public class dbOracle : dbConnect
{
private OracleConnection MyConn;//全局数据连接
private string MyConnectString;//全局连接字符串
public dbOracle( string connectstring)
{
MyConn = new OracleConnection();
MyConnectString = connectstring;
}
public override string Connect()//创建数据库连接
{
try
{
if (MyConn.State == ConnectionState.Closed || MyConn.State == ConnectionState.Broken)
{
MyConn.ConnectionString = MyConnectString;
MyConn.Open();
}
else
{
MyConn.Close();
MyConn.ConnectionString = MyConnectString;
MyConn.Open();
}
return ("ok");
}
catch (Exception ex)
{
return (ex.Message);
}
}
public override string CheckConn()//数据连接检查
{
try
{
if (this.MyConn.State == ConnectionState.Closed || this.MyConn.State == ConnectionState.Broken)
{
this.Connect();
}
return "ok";
}
catch (Exception ex)
{
return (ex.Message);
}
}
public override string FillDataset(string strsql, string TableName, DataSet DS)
{
try
{
string errstr;
errstr = CheckConn();
if (errstr != "ok") { return (errstr); }
OracleCommand Cmd = MyConn.CreateCommand();//sql查询命令对象
Cmd.CommandText = strsql;//sql命令付给MyOraCmd对象
OracleDataAdapter dabuff = new OracleDataAdapter();//建立适配器
if (DS.Tables.Contains(TableName) == false)//判断数据集中是否有相同名称表
{
DS.Tables.Add(new DataTable(TableName));
}
else
{ //清除数据集中存在表的行数
DS.Tables[TableName].Rows.Clear();
}
dabuff.SelectCommand = Cmd;
DS.Tables[TableName].BeginLoadData();
dabuff.Fill(DS.Tables[TableName]);
DS.Tables[TableName].EndLoadData();
Cmd.Dispose();
dabuff.Dispose();
return ("ok");
}
catch (Exception ex)
{
return (ex.Message);
}
}
public override string DeleteBySql(string strsql)//提交删除命令
{
try
{
this.CheckConn();
OracleCommand cmdDel = new OracleCommand();
OracleDataAdapter daDel = new OracleDataAdapter();
int delrownum;
cmdDel.Connection = MyConn;
cmdDel.CommandText = strsql;
daDel.DeleteCommand = cmdDel;
delrownum = daDel.DeleteCommand.ExecuteNonQuery();
cmdDel.Dispose();
daDel.Dispose();
return ("ok");
}
catch (Exception ex)
{
return (ex.Message);
}
}
public override string UpdateBySql(string strsql)//提交更新命令
{
try
{
this.CheckConn();
OracleCommand cmdUpdate = new OracleCommand();
OracleDataAdapter daUpdate = new OracleDataAdapter();
cmdUpdate.Connection = MyConn;
cmdUpdate.CommandText = strsql;
daUpdate.UpdateCommand = cmdUpdate;
daUpdate.UpdateCommand.ExecuteNonQuery();
cmdUpdate.Dispose();
daUpdate.Dispose();
return ("ok");
}
catch (Exception ex)
{
return (ex.Message);
}
}
public override string InsertBySql(string strsql)//提交插入命令
{
try
{
this.CheckConn();
OracleCommand cmdInsert = new OracleCommand();
OracleDataAdapter daInsert = new OracleDataAdapter();
cmdInsert.Connection = MyConn;
cmdInsert.CommandText = strsql;
daInsert.InsertCommand = cmdInsert;
daInsert.InsertCommand.ExecuteNonQuery();
cmdInsert.Dispose();
daInsert.Dispose();
return ("ok");
}
catch (Exception ex)
{
return (ex.Message);
}
}
}
sqlserver连接子类略
调用过程
dbConnect myoracle ;
dbFactory mydbfactory=new dbFactory ();
myoracle= mydbfactory.CreatConnect("oracle", 连接字符串);
数据连接工厂类
using System;
using System.Data;
using System.Configuration;
public class dbFactory
{
public dbFactory() { }
public dbConnect CreatConnect(string contype, string connectstring)
{
if (contype == "oracle")
{
return new dbOracle(connectstring);
}
else if (contype == "sqlserver")
{
return new dbSqlserver(connectstring);
}
else
{
contype = "oracle";
return new dbOracle(connectstring);
}
}
}
数据连接抽象类
using System;
using System.Data;
using System.Configuration;
public abstract class dbConnect
{
public dbConnect() { }
public abstract string Connect();
public abstract string CheckConn();//数据连接检查
public abstract string FillDataset(string strsql, string TableName, DataSet DS);
//填充dataset
public abstract string DeleteBySql(string strsql);
//提交删除命令
public abstract string UpdateBySql(string strsql);//提交更新命令
public abstract string InsertBySql(string strsql);//提交插入命令
}
Oracle连接子类
using System;
using System.Data;
using System.Configuration;
using System.Data.OracleClient;
public class dbOracle : dbConnect
{
private OracleConnection MyConn;//全局数据连接
private string MyConnectString;//全局连接字符串
public dbOracle( string connectstring)
{
MyConn = new OracleConnection();
MyConnectString = connectstring;
}
public override string Connect()//创建数据库连接
{
try
{
if (MyConn.State == ConnectionState.Closed || MyConn.State == ConnectionState.Broken)
{
MyConn.ConnectionString = MyConnectString;
MyConn.Open();
}
else
{
MyConn.Close();
MyConn.ConnectionString = MyConnectString;
MyConn.Open();
}
return ("ok");
}
catch (Exception ex)
{
return (ex.Message);
}
}
public override string CheckConn()//数据连接检查
{
try
{
if (this.MyConn.State == ConnectionState.Closed || this.MyConn.State == ConnectionState.Broken)
{
this.Connect();
}
return "ok";
}
catch (Exception ex)
{
return (ex.Message);
}
}
public override string FillDataset(string strsql, string TableName, DataSet DS)
{
try
{
string errstr;
errstr = CheckConn();
if (errstr != "ok") { return (errstr); }
OracleCommand Cmd = MyConn.CreateCommand();//sql查询命令对象
Cmd.CommandText = strsql;//sql命令付给MyOraCmd对象
OracleDataAdapter dabuff = new OracleDataAdapter();//建立适配器
if (DS.Tables.Contains(TableName) == false)//判断数据集中是否有相同名称表
{
DS.Tables.Add(new DataTable(TableName));
}
else
{ //清除数据集中存在表的行数
DS.Tables[TableName].Rows.Clear();
}
dabuff.SelectCommand = Cmd;
DS.Tables[TableName].BeginLoadData();
dabuff.Fill(DS.Tables[TableName]);
DS.Tables[TableName].EndLoadData();
Cmd.Dispose();
dabuff.Dispose();
return ("ok");
}
catch (Exception ex)
{
return (ex.Message);
}
}
public override string DeleteBySql(string strsql)//提交删除命令
{
try
{
this.CheckConn();
OracleCommand cmdDel = new OracleCommand();
OracleDataAdapter daDel = new OracleDataAdapter();
int delrownum;
cmdDel.Connection = MyConn;
cmdDel.CommandText = strsql;
daDel.DeleteCommand = cmdDel;
delrownum = daDel.DeleteCommand.ExecuteNonQuery();
cmdDel.Dispose();
daDel.Dispose();
return ("ok");
}
catch (Exception ex)
{
return (ex.Message);
}
}
public override string UpdateBySql(string strsql)//提交更新命令
{
try
{
this.CheckConn();
OracleCommand cmdUpdate = new OracleCommand();
OracleDataAdapter daUpdate = new OracleDataAdapter();
cmdUpdate.Connection = MyConn;
cmdUpdate.CommandText = strsql;
daUpdate.UpdateCommand = cmdUpdate;
daUpdate.UpdateCommand.ExecuteNonQuery();
cmdUpdate.Dispose();
daUpdate.Dispose();
return ("ok");
}
catch (Exception ex)
{
return (ex.Message);
}
}
public override string InsertBySql(string strsql)//提交插入命令
{
try
{
this.CheckConn();
OracleCommand cmdInsert = new OracleCommand();
OracleDataAdapter daInsert = new OracleDataAdapter();
cmdInsert.Connection = MyConn;
cmdInsert.CommandText = strsql;
daInsert.InsertCommand = cmdInsert;
daInsert.InsertCommand.ExecuteNonQuery();
cmdInsert.Dispose();
daInsert.Dispose();
return ("ok");
}
catch (Exception ex)
{
return (ex.Message);
}
}
}
sqlserver连接子类略
调用过程
dbConnect myoracle ;
dbFactory mydbfactory=new dbFactory ();
myoracle= mydbfactory.CreatConnect("oracle", 连接字符串);
相关文章推荐
- 简单的数据库连接工厂实现
- Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
- 简单调用VS自带的数据源选择对话框实现数据库连接字符串配置
- c#利用反射+特性实现简单的实体映射数据库操作类实现自动增删改查(一)
- 自己实现的一个简单的数据库连接的插件————JdbcPlugin
- 通过VS中的数据源选择对话框简单实现数据库连接配置[图]
- C#编程实现 Outlook Express 连接email和数据库
- 用C#实现的数据库抽象工厂(二)
- C#实现SQL 2005数据库远程连接代码
- 5.页面用ajax实现简单的连接数据库
- 设计模式之(简单工厂)(C#实现)(程杰)
- C#实现简单的数据库维护
- 页面用ajax实现简单的连接数据库
- 用C#实现的数据库抽象工厂(二)
- 工厂(工厂方法)模式实现多数据库的连接
- 简单的JDBC连接数据库实现
- jquery+ajax+C#实现无刷新操作数据库数据的简单实例
- 连接数据库及数据查询的简单实现方法
- C#_连接数据库实现 登录注册界面
- 简单调用VS自带的数据源选择对话框实现数据库连接字符串配置