init lserp cs 5.0

This commit is contained in:
cyf
2026-07-10 15:25:05 +08:00
commit 90f3fda86a
3799 changed files with 976868 additions and 0 deletions
@@ -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 ) );
}
}
}