using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NFine.Data.Extensions { public class DbFactory { /// /// 根据配置文件中所配置的数据库类型 /// 来获取命令参数中的参数符号oracle为":",sqlserver为"@" /// /// public static string CreateDbParmCharacter() { string character = string.Empty; switch (DbHelper.DbType) { case DatabaseType.SqlServer: character = "@"; break; case DatabaseType.Oracle: character = ":"; break; case DatabaseType.MySql: character = "?"; break; case DatabaseType.Access: character = "@"; break; case DatabaseType.SQLite: character = "@"; break; default: throw new Exception("数据库类型目前不支持!"); } return character; } /// /// 根据配置文件中所配置的数据库类型和传入的 /// 数据库链接字符串来创建相应数据库连接对象 /// /// /// public static DbConnection CreateDbConnection(string connectionString) { DbConnection conn = null; switch (DbHelper.DbType) { case DatabaseType.SqlServer: conn = new SqlConnection(connectionString); break; //case DatabaseType.Oracle: // conn = new OracleConnection(connectionString); // break; //case DatabaseType.MySql: // conn = new MySqlConnection(connectionString); // break; //case DatabaseType.Access: // conn = new OleDbConnection(connectionString); // break; //case DatabaseType.SQLite: // conn = new SQLiteConnection(connectionString); // break; default: throw new Exception("数据库类型目前不支持!"); } return conn; } /// /// 根据配置文件中所配置的数据库类型 /// 来创建相应数据库命令对象 /// /// public static DbCommand CreateDbCommand() { DbCommand cmd = null; switch (DbHelper.DbType) { case DatabaseType.SqlServer: cmd = new SqlCommand(); break; //case DatabaseType.Oracle: // cmd = new OracleCommand(); // break; //case DatabaseType.MySql: // cmd = new MySqlCommand(); // break; //case DatabaseType.Access: // cmd = new OleDbCommand(); // break; //case DatabaseType.SQLite: // cmd = new SQLiteCommand(); // break; default: throw new Exception("数据库类型目前不支持!"); } return cmd; } /// /// 根据配置文件中所配置的数据库类型 /// 来创建相应数据库适配器对象 /// /// public static IDbDataAdapter CreateDataAdapter() { IDbDataAdapter adapter = null; switch (DbHelper.DbType) { case DatabaseType.SqlServer: adapter = new SqlDataAdapter(); break; //case DatabaseType.Oracle: // adapter = new OracleDataAdapter(); // break; //case DatabaseType.MySql: // adapter = new MySqlDataAdapter(); // break; //case DatabaseType.Access: // adapter = new OleDbDataAdapter(); // break; //case DatabaseType.SQLite: // adapter = new SQLiteDataAdapter(); // break; default: throw new Exception("数据库类型目前不支持!"); } return adapter; } /// /// 根据配置文件中所配置的数据库类型 /// 和传入的命令对象来创建相应数据库适配器对象 /// /// public static IDbDataAdapter CreateDataAdapter(DbCommand cmd) { IDbDataAdapter adapter = null; switch (DbHelper.DbType) { case DatabaseType.SqlServer: adapter = new SqlDataAdapter((SqlCommand)cmd); break; //case DatabaseType.Oracle: // adapter = new OracleDataAdapter((OracleCommand)cmd); // break; //case DatabaseType.MySql: // adapter = new MySqlDataAdapter((MySqlCommand)cmd); // break; //case DatabaseType.Access: // adapter = new OleDbDataAdapter((OleDbCommand)cmd); // break; //case DatabaseType.SQLite: // adapter = new SQLiteDataAdapter((SQLiteCommand)cmd); // break; default: throw new Exception("数据库类型目前不支持!"); } return adapter; } /// /// 根据配置文件中所配置的数据库类型 /// 来创建相应数据库的参数对象 /// /// public static DbParameter CreateDbParameter() { DbParameter param = null; switch (DbHelper.DbType) { case DatabaseType.SqlServer: param = new SqlParameter(); break; //case DatabaseType.Oracle: // param = new OracleParameter(); // break; //case DatabaseType.MySql: // param = new MySqlParameter(); // break; //case DatabaseType.Access: // param = new OleDbParameter(); // break; //case DatabaseType.SQLite: // param = new SQLiteParameter(); // break; default: throw new Exception("数据库类型目前不支持!"); } return param; } /// /// 根据配置文件中所配置的数据库类型 /// 来创建相应数据库的参数对象 /// /// public static DbParameter CreateDbParameter(string paramName, object value) { DbParameter param = DbFactory.CreateDbParameter(); param.ParameterName = paramName; param.Value = value; return param; } /// /// 根据配置文件中所配置的数据库类型 /// 来创建相应数据库的参数对象 /// /// public static DbParameter CreateDbParameter(string paramName, object value, DbType dbType) { DbParameter param = DbFactory.CreateDbParameter(); param.DbType = dbType; param.ParameterName = paramName; param.Value = value; return param; } /// /// 根据配置文件中所配置的数据库类型 /// 来创建相应数据库的参数对象 /// /// public static DbParameter CreateDbParameter(string paramName, object value, DbType dbType, int size) { DbParameter param = DbFactory.CreateDbParameter(); param.DbType = dbType; param.ParameterName = paramName; param.Value = value; param.Size = size; return param; } /// /// 根据配置文件中所配置的数据库类型 /// 来创建相应数据库的参数对象 /// /// public static DbParameter CreateDbParameter(string paramName, object value, int size) { DbParameter param = DbFactory.CreateDbParameter(); param.ParameterName = paramName; param.Value = value; param.Size = size; return param; } /// /// 根据配置文件中所配置的数据库类型 /// 来创建相应数据库的参数对象 /// /// public static DbParameter CreateDbOutParameter(string paramName, int size) { DbParameter param = DbFactory.CreateDbParameter(); param.Direction = ParameterDirection.Output; param.ParameterName = paramName; param.Size = size; return param; } /// /// 根据配置文件中所配置的数据库类型 /// 和传入的参数来创建相应数据库的sql语句对应参数对象 /// /// public static DbParameter[] CreateDbParameters(int size) { int i = 0; DbParameter[] param = null; switch (DbHelper.DbType) { case DatabaseType.SqlServer: param = new SqlParameter[size]; while (i < size) { param[i] = new SqlParameter(); i++; } break; //case DatabaseType.Oracle: // param = new OracleParameter[size]; // while (i < size) { param[i] = new OracleParameter(); i++; } // break; //case DatabaseType.MySql: // param = new MySqlParameter[size]; // while (i < size) { param[i] = new MySqlParameter(); i++; } // break; //case DatabaseType.Access: // param = new OleDbParameter[size]; // while (i < size) { param[i] = new OleDbParameter(); i++; } // break; //case DatabaseType.SQLite: // param = new SQLiteParameter[size]; // while (i < size) { param[i] = new SQLiteParameter(); i++; } // break; default: throw new Exception("数据库类型目前不支持!"); } return param; } } }