C#打造自己通用的数据库访问类解析Word文档格式.docx
- 文档编号:22771327
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:38
- 大小:20.43KB
C#打造自己通用的数据库访问类解析Word文档格式.docx
《C#打造自己通用的数据库访问类解析Word文档格式.docx》由会员分享,可在线阅读,更多相关《C#打造自己通用的数据库访问类解析Word文档格式.docx(38页珍藏版)》请在冰豆网上搜索。
/summary>
publicsealedclassDbUtility
{
publicstringConnectionString{get;
set;
}
privateDbProviderFactoryproviderFactory;
///构造函数
paramname="
connectionString"
>
数据库连接字符串<
/param>
providerType"
数据库类型枚举,参见<
paramrefname="
/>
<
publicDbUtility(stringconnectionString,DbProviderTypeproviderType)
ConnectionString=connectionString;
providerFactory=ProviderFactory.GetDbProviderFactory(providerType);
if(providerFactory==null)
thrownewArgumentException("
Can'
tloadDbProviderFactoryforgivenvalueofproviderType"
);
///对数据库执行增删改操作,返回受影响的行数。
sql"
要执行的增删改的SQL语句<
parameters"
执行增删改语句所需要的参数<
returns>
/returns>
publicintExecuteNonQuery(stringsql,IList<
DbParameter>
parameters)
returnExecuteNonQuery(sql,parameters,CommandType.Text);
commandType"
执行的SQL语句的类型<
parameters,CommandTypecommandType)
using(DbCommandcommand=CreateDbCommand(sql,parameters,commandType))
command.Connection.Open();
intaffectedRows=command.ExecuteNonQuery();
command.Connection.Close();
returnaffectedRows;
///执行一个查询语句,返回一个关联的DataReader实例
要执行的查询语句<
执行SQL查询语句所需要的参数<
publicDbDataReaderExecuteReader(stringsql,IList<
returnExecuteReader(sql,parameters,CommandType.Text);
DbCommandcommand=CreateDbCommand(sql,parameters,commandType);
returncommand.ExecuteReader(CommandBehavior.CloseConnection);
///执行一个查询语句,返回一个包含查询结果的DataTable
publicDataTableExecuteDataTable(stringsql,IList<
returnExecuteDataTable(sql,parameters,CommandType.Text);
using(DbDataAdapteradapter=providerFactory.CreateDataAdapter())
adapter.SelectCommand=command;
DataTabledata=newDataTable();
adapter.Fill(data);
returndata;
///执行一个查询语句,返回查询结果的第一行第一列
publicObjectExecuteScalar(stringsql,IList<
returnExecuteScalar(sql,parameters,CommandType.Text);
objectresult=command.ExecuteScalar();
returnresult;
///查询多个实体集合
typeparamname="
T"
返回的实体集合类型<
/typeparam>
publicList<
T>
QueryForList<
(stringsql,IList<
parameters)whereT:
new()
returnQueryForList<
(sql,parameters,CommandType.Text);
parameters,CommandTypecommandType)whereT:
DataTabledata=ExecuteDataTable(sql,parameters,commandType);
returnEntityReader.GetEntities<
(data);
///查询单个实体
publicTQueryForObject<
returnQueryForObject<
(sql,parameters,commandType)[0];
publicDbParameterCreateDbParameter(stringname,objectvalue)
returnCreateDbParameter(name,ParameterDirection.Input,value);
publicDbParameterCreateDbParameter(stringname,ParameterDirectionparameterDirection,objectvalue)
DbParameterparameter=providerFactory.CreateParameter();
parameter.ParameterName=name;
parameter.Value=value;
parameter.Direction=parameterDirection;
returnparameter;
///创建一个DbCommand对象
privateDbCommandCreateDbCommand(stringsql,IList<
DbConnectionconnection=providerFactory.CreateConnection();
DbCommandcommand=providerFactory.CreateCommand();
connection.ConnectionString=ConnectionString;
command.CommandText=sql;
command.CommandType=commandType;
command.Connection=connection;
if(!
(parameters==null||parameters.Count==0))
foreach(DbParameterparameterinparameters)
command.Parameters.Add(parameter);
returncommand;
///数据库类型枚举
publicenumDbProviderType:
byte
SqlServer,
MySql,
SQLite,
Oracle,
ODBC,
OleDb,
Firebird,
PostgreSql,
DB2,
Informix,
SqlServerCe
///DbProviderFactory工厂类
publicclassProviderFactory
privatestaticDictionary<
DbProviderType,string>
providerInvariantNames=newDictionary<
();
DbProviderType,DbProviderFactory>
providerFactoies=newDictionary<
(20);
staticProviderFactory()
//加载已知的数据库访问类的程序集
providerInvariantNames.Add(DbProviderType.SqlServer,"
System.Data.SqlClient"
providerInvariantNames.Add(DbProviderType.OleDb,"
System.Data.OleDb"
providerInvariantNames.Add(DbProviderType.ODBC,"
System.Data.ODBC"
providerInvariantNames.Add(DbProviderType.Oracle,"
Oracle.DataAccess.Client"
providerInvariantNames.Add(DbProviderType.MySql,"
MySql.Data.MySqlClient"
providerInvariantNames.Add(DbProviderType.SQLite,"
System.Data.SQLite"
providerInvariantNames.Add(DbProviderType.Firebird,"
FirebirdSql.Data.Firebird"
providerInvariantNames.Add(DbProviderType.PostgreSql,"
Npgsql"
providerInvariantNames.Add(DbProviderType.DB2,"
IBM.Data.DB2.iSeries"
providerInvariantNames.Add(DbProviderType.Informix,"
IBM.Data.Informix"
providerInvariantNames.Add(DbProviderType.SqlServerCe,"
System.Data.SqlServerCe"
///获取指定数据库类型对应的程序集名称
数据库类型枚举<
publicstaticstringGetProviderInvariantName(DbProviderTypeproviderType)
returnproviderInvariantNames[providerType];
///获取指定类型的数据库对应的DbProviderFactory
publicstaticDbProviderFactoryGetDbProviderFactory(DbProviderTypeproviderType)
//如果还没有加载,则加载该DbProviderFactory
providerFactoies.ContainsKey(providerType))
providerFactoies.Add(providerType,ImportDbProviderFactory(providerType));
returnproviderFactoies[providerType];
///加载指定数据库类型的DbProviderFactory
privatestaticDbProviderFactoryImportDbProviderFactory(DbProviderTypeproviderType)
stringproviderName=providerInvariantNames[providerType];
DbProviderFactoryfactory
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 打造 自己 通用 数据库 访问 解析