您的位置:首页 > 数据库

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", 连接字符串);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: