init lserp cs 5.0
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
|
||||
namespace Zhaizj.Framework.Data {
|
||||
|
||||
/// <summary>
|
||||
/// 数据工厂,可以不用考虑数据库差异而获取 Connection, Command, DataAdapter
|
||||
/// </summary>
|
||||
public class DataFactory {
|
||||
|
||||
public static IDbConnection GetConnection( String connectionString, DatabaseType dbtype ) {
|
||||
return DbFactoryBase.Instance( dbtype ).GetConnection( connectionString );
|
||||
}
|
||||
|
||||
public static IDbCommand GetCommand( String CommandText, IDbConnection cn ) {
|
||||
return DbFactoryBase.Instance( cn ).GetCommand( CommandText );
|
||||
}
|
||||
|
||||
internal static IDatabaseChecker GetDatabaseChecker( DatabaseType dbtype ) {
|
||||
return DbFactoryBase.Instance( dbtype ).GetDatabaseChecker();
|
||||
}
|
||||
|
||||
public static IDatabaseDialect GetDialect( DatabaseType dbtype ) {
|
||||
return DbFactoryBase.Instance( dbtype ).GetDialect();
|
||||
}
|
||||
|
||||
public static Object SetParameter( IDbCommand cmd, String parameterName, Object parameterValue ) {
|
||||
return DbFactoryBase.Instance( cmd ).SetParameter( cmd, parameterName, parameterValue );
|
||||
}
|
||||
|
||||
public static DbDataAdapter GetAdapter( IDbCommand cmd ) {
|
||||
return DbFactoryBase.Instance( cmd ).GetAdapter();
|
||||
}
|
||||
|
||||
public static DbDataAdapter GetAdapter( String CommandText, IDbConnection cn ) {
|
||||
return DbFactoryBase.Instance( cn ).GetAdapter( CommandText );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
|
||||
namespace Zhaizj.Framework.Data {
|
||||
|
||||
/// <summary>
|
||||
/// 数据工厂抽象基类,可以不用考虑数据库差异而获取 Connection, Command, DataAdapter
|
||||
/// </summary>
|
||||
public abstract class DbFactoryBase {
|
||||
|
||||
public static DbFactoryBase Instance( String connectionString ) {
|
||||
DbFactoryBase result = Instance( DbTypeChecker.GetDatabaseType( connectionString ) );
|
||||
result.cn = result.GetConnection( connectionString );
|
||||
return result;
|
||||
}
|
||||
|
||||
public static DbFactoryBase Instance( IDbConnection cn ) {
|
||||
DbFactoryBase result = Instance( DbTypeChecker.GetDatabaseType( cn ) );
|
||||
result.cn = cn;
|
||||
return result;
|
||||
}
|
||||
|
||||
public static DbFactoryBase Instance( IDbCommand cmd ) {
|
||||
DbFactoryBase result = Instance( DbTypeChecker.GetDatabaseType( cmd ) );
|
||||
result.cmd = cmd;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static DbFactoryBase Instance( DatabaseType dbtype ) {
|
||||
|
||||
if (dbtype == DatabaseType.SqlServer) return new MsSqlDbFactory();
|
||||
if (dbtype == DatabaseType.SqlServer2000) return new MsSqlDbFactory();
|
||||
if (dbtype == DatabaseType.Access) return new AccessFactory();
|
||||
if (dbtype == DatabaseType.MySql) return new MysqlFactory();
|
||||
if (dbtype == DatabaseType.Oracle) return new OracleFactory();
|
||||
|
||||
throw new Exception( lang.get( "dbNotSupport" ) );
|
||||
}
|
||||
|
||||
public abstract IDbConnection GetConnection( String connectionString );
|
||||
public abstract IDbCommand GetCommand( String CommandText );
|
||||
internal abstract IDatabaseChecker GetDatabaseChecker();
|
||||
public abstract IDatabaseDialect GetDialect();
|
||||
public abstract Object SetParameter( IDbCommand cmd, String parameterName, Object parameterValue );
|
||||
public abstract DbDataAdapter GetAdapter();
|
||||
public abstract DbDataAdapter GetAdapter( String CommandText );
|
||||
|
||||
|
||||
protected IDbConnection cn;
|
||||
protected IDbCommand cmd;
|
||||
|
||||
|
||||
protected virtual void setTransaction( IDbCommand cmd ) {
|
||||
DbContext.setTransaction( cmd );
|
||||
}
|
||||
|
||||
protected virtual Object processValue( Object parameterValue ) {
|
||||
|
||||
if (parameterValue is DateTime) {
|
||||
DateTime time = (DateTime)parameterValue;
|
||||
if ((time < new DateTime( 1800, 1, 1 )) || (time > new DateTime( 9000, 1, 1 ))) {
|
||||
parameterValue = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (parameterValue is string) {
|
||||
parameterValue = parameterValue.ToString().Trim();
|
||||
}
|
||||
else if (parameterValue is int && (int)parameterValue == 0) {
|
||||
parameterValue = Convert.ToInt32( parameterValue );
|
||||
}
|
||||
|
||||
return parameterValue;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data.SqlClient;
|
||||
using System.Data.OleDb;
|
||||
using System.Data.OracleClient;
|
||||
using System.Data;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Zhaizj.Framework.Data {
|
||||
|
||||
/// <summary>
|
||||
/// 检查数据库类型的工具
|
||||
/// </summary>
|
||||
public class DbTypeChecker {
|
||||
|
||||
|
||||
public static DatabaseType GetDatabaseType( IDbCommand cmd ) {
|
||||
if (cmd is SqlCommand) {
|
||||
return DatabaseType.SqlServer;
|
||||
}
|
||||
if (cmd is OleDbCommand) {
|
||||
return DatabaseType.Access;
|
||||
}
|
||||
if (cmd.GetType() == MysqlFactory.mySqlCommandType) {
|
||||
return DatabaseType.MySql;
|
||||
}
|
||||
if (cmd is OracleCommand) {
|
||||
return DatabaseType.Oracle;
|
||||
}
|
||||
return DatabaseType.Other;
|
||||
}
|
||||
|
||||
public static DatabaseType GetDatabaseType( IDbConnection cn ) {
|
||||
if (cn is OleDbConnection) {
|
||||
return DatabaseType.Access;
|
||||
}
|
||||
if (cn is SqlConnection) {
|
||||
return DatabaseType.SqlServer;
|
||||
}
|
||||
if (cn.GetType() == MysqlFactory.mySqlConnectionType) {
|
||||
return DatabaseType.MySql;
|
||||
}
|
||||
if (cn is OracleConnection) {
|
||||
return DatabaseType.Oracle;
|
||||
}
|
||||
return DatabaseType.Other;
|
||||
}
|
||||
|
||||
public static DatabaseType GetDatabaseType( String connectionString ) {
|
||||
if (!strUtil.IsNullOrEmpty( connectionString )) {
|
||||
if (connectionString.ToLower().IndexOf( "oledb" ) > 0) {
|
||||
return DatabaseType.Access;
|
||||
}
|
||||
if (connectionString.ToLower().IndexOf( "uid" ) > 0) {
|
||||
return DatabaseType.SqlServer;
|
||||
}
|
||||
if (connectionString.ToLower().IndexOf( "initial catalog" ) > 0) {
|
||||
return DatabaseType.SqlServer;
|
||||
}
|
||||
if (connectionString.ToLower().IndexOf( "user id" ) > 0) {
|
||||
return DatabaseType.MySql;
|
||||
}
|
||||
}
|
||||
return DatabaseType.Access;
|
||||
}
|
||||
|
||||
public static DatabaseType GetFromString( String typeString ) {
|
||||
|
||||
try {
|
||||
|
||||
return (DatabaseType)Enum.Parse( typeof( DatabaseType ), typeString, true );
|
||||
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new Exception( "数据库类型设置错误:" + ex.Message );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Data.Common;
|
||||
|
||||
namespace Zhaizj.Framework.Data {
|
||||
|
||||
/// <summary>
|
||||
/// sqlserver Êý¾Ý¹¤³§£¬»ñÈ¡ Connection, Command, DataAdapter
|
||||
/// </summary>
|
||||
public class MsSqlDbFactory : DbFactoryBase {
|
||||
|
||||
public override IDbConnection GetConnection( String connectionString ) {
|
||||
return new SqlConnection( connectionString );
|
||||
}
|
||||
|
||||
public override IDbCommand GetCommand( String CommandText ) {
|
||||
IDbCommand cmd = new SqlCommand();
|
||||
cmd.Connection = cn;
|
||||
cmd.CommandText = CommandText;
|
||||
setTransaction( cmd );
|
||||
return cmd;
|
||||
}
|
||||
|
||||
internal override IDatabaseChecker GetDatabaseChecker() {
|
||||
return new SQLServerDatabaseChecker();
|
||||
}
|
||||
|
||||
public override IDatabaseDialect GetDialect() {
|
||||
return new SQLServerDialect();
|
||||
}
|
||||
|
||||
public override Object SetParameter( IDbCommand cmd, String parameterName, Object parameterValue ) {
|
||||
|
||||
parameterValue = base.processValue( parameterValue );
|
||||
parameterName = new SQLServerDialect().GetParameterAdder( parameterName );
|
||||
|
||||
IDbDataParameter parameter = new SqlParameter( parameterName, parameterValue );
|
||||
cmd.Parameters.Add( parameter );
|
||||
|
||||
return parameterValue;
|
||||
}
|
||||
|
||||
public override DbDataAdapter GetAdapter() {
|
||||
return new SqlDataAdapter( (SqlCommand)cmd );
|
||||
}
|
||||
|
||||
public override DbDataAdapter GetAdapter( String CommandText ) {
|
||||
return new SqlDataAdapter( (SqlCommand)GetCommand( CommandText ) );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Zhaizj.Framework.Data {
|
||||
|
||||
/// <summary>
|
||||
/// mysql Êý¾Ý¹¤³§£¬»ñÈ¡ Connection, Command, DataAdapter
|
||||
/// </summary>
|
||||
public class MysqlFactory : DbFactoryBase {
|
||||
|
||||
|
||||
public override IDbConnection GetConnection( String connectionString ) {
|
||||
return getMySqlConnection( connectionString );
|
||||
}
|
||||
|
||||
public override IDbCommand GetCommand( String CommandText ) {
|
||||
IDbCommand cmd = getMySqlCommand();
|
||||
cmd.Connection = cn;
|
||||
cmd.CommandText = CommandText;
|
||||
setTransaction( cmd );
|
||||
return cmd;
|
||||
}
|
||||
|
||||
internal override IDatabaseChecker GetDatabaseChecker() {
|
||||
return new MysqlDatabaseChecker();
|
||||
}
|
||||
|
||||
public override IDatabaseDialect GetDialect() {
|
||||
return new MysqlDialect();
|
||||
}
|
||||
|
||||
public override Object SetParameter( IDbCommand cmd, String parameterName, Object parameterValue ) {
|
||||
|
||||
parameterValue = base.processValue( parameterValue );
|
||||
parameterName = new MysqlDialect().GetParameterAdder( parameterName );
|
||||
|
||||
IDbDataParameter parameter = getMySqlParameter( parameterName, parameterValue );
|
||||
cmd.Parameters.Add( parameter );
|
||||
|
||||
return parameterValue;
|
||||
}
|
||||
|
||||
public override DbDataAdapter GetAdapter() {
|
||||
return getMySqlDataAdapter( cmd );
|
||||
}
|
||||
|
||||
public override DbDataAdapter GetAdapter( String CommandText ) {
|
||||
return getMySqlDataAdapter( GetCommand( CommandText ) );
|
||||
}
|
||||
|
||||
//-----------------------------------
|
||||
|
||||
private static IDbCommand getMySqlCommand() {
|
||||
return (rft.GetInstance( mySqlCommandType ) as IDbCommand);
|
||||
}
|
||||
|
||||
private static IDbConnection getMySqlConnection( String connectionString ) {
|
||||
return (rft.GetInstance( mySqlConnectionType, new object[] { connectionString } ) as IDbConnection);
|
||||
}
|
||||
|
||||
private static DbDataAdapter getMySqlDataAdapter( Object cmd ) {
|
||||
return (rft.GetInstance( mySqlDataAssembly.GetType( "MySql.Data.MySqlClient.MySqlDataAdapter" ), new object[] { cmd } ) as DbDataAdapter);
|
||||
}
|
||||
|
||||
private static IDbDataParameter getMySqlParameter( String parameterName, Object parameterValue ) {
|
||||
return (rft.GetInstance( mySqlDataAssembly.GetType( "MySql.Data.MySqlClient.MySqlParameter" ), new object[] { parameterName, parameterValue } ) as IDbDataParameter);
|
||||
}
|
||||
|
||||
public static Type mySqlCommandType {
|
||||
get { return mySqlDataAssembly.GetType( "MySql.Data.MySqlClient.MySqlCommand" ); }
|
||||
}
|
||||
|
||||
public static Type mySqlConnectionType {
|
||||
get { return mySqlDataAssembly.GetType( "MySql.Data.MySqlClient.MySqlConnection" ); }
|
||||
}
|
||||
|
||||
public static Assembly mySqlDataAssembly {
|
||||
get { return Assembly.Load( "MySql.Data" ); }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using System.Data.OleDb;
|
||||
using System.Data.Common;
|
||||
|
||||
namespace Zhaizj.Framework.Data {
|
||||
|
||||
/// <summary>
|
||||
/// access Êý¾Ý¹¤³§£¬»ñÈ¡ Connection, Command, DataAdapter
|
||||
/// </summary>
|
||||
public class AccessFactory : DbFactoryBase {
|
||||
|
||||
|
||||
public override IDbConnection GetConnection( String connectionString ) {
|
||||
return new OleDbConnection( connectionString );
|
||||
}
|
||||
|
||||
public override IDbCommand GetCommand( String CommandText ) {
|
||||
IDbCommand cmd = new OleDbCommand();
|
||||
cmd.Connection = cn;
|
||||
cmd.CommandText = CommandText;
|
||||
setTransaction( cmd );
|
||||
return cmd;
|
||||
}
|
||||
|
||||
internal override IDatabaseChecker GetDatabaseChecker() {
|
||||
return new AccessDatabaseChecker();
|
||||
}
|
||||
|
||||
public override IDatabaseDialect GetDialect() {
|
||||
return new AccessDialect();
|
||||
}
|
||||
|
||||
public override Object SetParameter( IDbCommand cmd, String parameterName, Object parameterValue ) {
|
||||
|
||||
parameterValue = base.processValue( parameterValue );
|
||||
parameterName = new AccessDialect().GetParameterAdder( parameterName );
|
||||
|
||||
IDbDataParameter parameter;
|
||||
if (parameterValue is DateTime) {
|
||||
parameter = new OleDbParameter( parameterName, parameterValue.ToString() );
|
||||
}
|
||||
else {
|
||||
parameter = new OleDbParameter( parameterName, parameterValue );
|
||||
}
|
||||
cmd.Parameters.Add( parameter );
|
||||
|
||||
return parameterValue;
|
||||
|
||||
}
|
||||
|
||||
public override DbDataAdapter GetAdapter() {
|
||||
return new OleDbDataAdapter( (OleDbCommand)cmd );
|
||||
}
|
||||
|
||||
public override DbDataAdapter GetAdapter( String CommandText ) {
|
||||
return new OleDbDataAdapter( (OleDbCommand)GetCommand( CommandText ) );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using System.Data.OracleClient;
|
||||
using System.Data.Common;
|
||||
|
||||
namespace Zhaizj.Framework.Data {
|
||||
|
||||
/// <summary>
|
||||
/// oracle Êý¾Ý¹¤³§£¬»ñÈ¡ Connection, Command, DataAdapter
|
||||
/// </summary>
|
||||
public class OracleFactory : DbFactoryBase {
|
||||
|
||||
public override IDbConnection GetConnection( String connectionString ) {
|
||||
return new OracleConnection( connectionString );
|
||||
}
|
||||
|
||||
public override IDbCommand GetCommand( String CommandText ) {
|
||||
IDbCommand cmd = new OracleCommand();
|
||||
cmd.Connection = cn;
|
||||
cmd.CommandText = CommandText;
|
||||
setTransaction( cmd );
|
||||
return cmd;
|
||||
}
|
||||
|
||||
// TODO
|
||||
internal override IDatabaseChecker GetDatabaseChecker() {
|
||||
throw new Exception( lang.get( "dbNotSupport" ) );
|
||||
}
|
||||
|
||||
// TODO
|
||||
public override IDatabaseDialect GetDialect() {
|
||||
throw new Exception( lang.get( "dbNotSupport" ) );
|
||||
}
|
||||
|
||||
public override Object SetParameter( IDbCommand cmd, String parameterName, Object parameterValue ) {
|
||||
|
||||
parameterValue = base.processValue( parameterValue );
|
||||
|
||||
// TODO
|
||||
//parameterName = new SQLServerDialect().GetParameterAdder( parameterName );
|
||||
|
||||
IDbDataParameter parameter = new OracleParameter( parameterName, parameterValue );
|
||||
cmd.Parameters.Add( parameter );
|
||||
|
||||
return parameterValue;
|
||||
}
|
||||
|
||||
public override DbDataAdapter GetAdapter() {
|
||||
return new OracleDataAdapter( (OracleCommand)cmd );
|
||||
}
|
||||
|
||||
public override DbDataAdapter GetAdapter( String CommandText ) {
|
||||
return new OracleDataAdapter( (OracleCommand)GetCommand( CommandText ) );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user