Пример #1
0
 /// <summary>
 /// Set and show an auto-generated connection string.
 /// </summary>
 private void SetConnectionString(DbConnectionOptions dbConnectionOptions)
 {
     if (dbConnectionOptions != null)
     {
         if (dbConnectionOptions.KnownDBMS == KnownDBMS.Oracle)
         {
             txtConnectionString.Text = OraDataSource.BuildOraConnectionString(dbConnectionOptions, true);
         }
         else if (dbConnectionOptions.KnownDBMS == KnownDBMS.PostgreSQL)
         {
             txtConnectionString.Text = PgSqlDataSource.BuildPgSqlConnectionString(dbConnectionOptions, true);
         }
         else if (dbConnectionOptions.KnownDBMS == KnownDBMS.MySQL)
         {
             txtConnectionString.Text = MySqlDataSource.BuildMySqlConnectionString(dbConnectionOptions, true);
         }
         else if (dbConnectionOptions.KnownDBMS == KnownDBMS.MSSQL)
         {
             txtConnectionString.Text = SqlDataSource.BuildSqlConnectionString(dbConnectionOptions, true);
         }
         else
         {
             txtConnectionString.Text = "";
         }
     }
 }
Пример #2
0
        /// <summary>
        /// Prepare DML
        /// </summary>
        /// <param name="ids">SQL语句ID编号</param>
        /// <param name="objs">输入对象</param>
        /// <returns></returns>
        public string execPrepare(string id, Object obj)
        {
            try
            {
                resultSql = "";
                if (id == null)
                {
                    throw new Exception("参数不全");
                }
                if (obj == null)
                {
                    throw new Exception("参数不全");
                }
                daoStruct = parseDao.ObtainConfig(id);
                if (daoStruct.DbType.Length <= 0 || daoStruct.ConStr.Length <= 0 || daoStruct.SqlStr.Length <= 0)
                {
                    throw new Exception("配置参数不全");
                }
                string sql = daoStruct.SqlStr;
                resultSql = sql;
                if (daoStruct.IsLog)
                {
                    WriteLogin.writeDBLog(daoStruct.Desc, sql);
                }
                List <DTOClass> dtolist = setDto(obj);
                if (sql.Length <= 0)
                {
                    throw new Exception("构造SQL语句出错");
                }
                IDataSource dataSource = null;
                switch (daoStruct.DbType)
                {
                case "oracle":
                    dataSource = new OracleDataSource(daoStruct);
                    break;

                case "mysql":
                    dataSource = new MySqlDataSource(daoStruct);
                    break;

                case "sql":
                    dataSource = new SqlDataSource(daoStruct);
                    break;

                case "access":
                    dataSource = new AccessDataSource(daoStruct);
                    break;

                case "sqllite":
                    dataSource = new SqlLiteDataSource(daoStruct);
                    break;
                }
                dataSource.PrepareExcute(sql, dtolist);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            return("");
        }
Пример #3
0
        /// <summary>
        /// 单DML语句操作
        /// </summary>
        /// <param name="id">SQL语句ID编号</param>
        /// <param name="obj">输入输出对象</param>
        /// <returns></returns>
        public string execDml(string id, Object obj)
        {
            resultSql = "";
            if (id == "")
            {
                throw new Exception("参数不全");
            }
            if (obj == null)
            {
                throw new Exception("参数不全");
            }
            daoStruct = parseDao.ObtainConfig(id);
            if (daoStruct.DbType.Length <= 0 || daoStruct.ConStr.Length <= 0 || daoStruct.SqlStr.Length <= 0)
            {
                throw new Exception("配置参数不全");
            }
            string sql = "";

            sql       = setSql(obj, daoStruct.SqlStr);
            resultSql = sql;
            //记录SQL
            if (daoStruct.IsLog)
            {
                WriteLogin.writeDBLog(daoStruct.Desc, resultSql);
            }
            if (sql.Length <= 0)
            {
                throw new Exception("构造SQL语句出错");
            }
            IDataSource dataSource = null;

            switch (daoStruct.DbType)
            {
            case "oracle":
                dataSource = new OracleDataSource(daoStruct);
                break;

            case "mysql":
                dataSource = new MySqlDataSource(daoStruct);
                break;

            case "sql":
                dataSource = new SqlDataSource(daoStruct);
                break;

            case "access":
                dataSource = new AccessDataSource(daoStruct);
                break;

            case "sqllite":
                dataSource = new SqlLiteDataSource(daoStruct);
                break;
            }
            if (dataSource != null)
            {
                dataSource.SingleExecute(sql);
            }

            return("");
        }
    /// <summary>
    /// Initializes a new instance of the <see cref="MySqlTransactionalDataSource"/> class.
    /// </summary>
    /// <param name="dataSource">The data source.</param>
    /// <param name="isolationLevel">The isolation level.</param>
    /// <param name="forwardEvents">if set to <c>true</c> [forward events].</param>
    public MySqlTransactionalDataSource(MySqlDataSource dataSource, IsolationLevel?isolationLevel, bool forwardEvents)
        : base(new MySqlDataSourceSettings(dataSource, forwardEvents))
    {
        Name = dataSource.Name;

        m_BaseDataSource = dataSource ?? throw new ArgumentNullException(nameof(dataSource), $"{nameof(dataSource)} is null.");
        m_Connection     = dataSource.CreateConnection();

        if (isolationLevel == null)
        {
            m_Transaction = m_Connection.BeginTransaction();
        }
        else
        {
            m_Transaction = m_Connection.BeginTransaction(isolationLevel.Value);
        }

        if (forwardEvents)
        {
            ExecutionStarted  += (sender, e) => dataSource.OnExecutionStarted(e);
            ExecutionFinished += (sender, e) => dataSource.OnExecutionFinished(e);
            ExecutionError    += (sender, e) => dataSource.OnExecutionError(e);
            ExecutionCanceled += (sender, e) => dataSource.OnExecutionCanceled(e);
        }
        AuditRules = dataSource.AuditRules;
        UserValue  = dataSource.UserValue;
    }
        /// <summary>
        /// Initializes a new instance of the <see cref="MySqlTransactionalDataSource"/> class.
        /// </summary>
        /// <param name="dataSource">The data source.</param>
        /// <param name="isolationLevel">The isolation level.</param>
        /// <param name="forwardEvents">if set to <c>true</c> [forward events].</param>
        public MySqlTransactionalDataSource(MySqlDataSource dataSource, IsolationLevel?isolationLevel, bool forwardEvents)
            : base(new MySqlDataSourceSettings {
            DefaultCommandTimeout = dataSource.DefaultCommandTimeout, StrictMode = dataSource.StrictMode, SuppressGlobalEvents = dataSource.SuppressGlobalEvents || forwardEvents
        })
        {
            Name = dataSource.Name;

            m_BaseDataSource = dataSource;
            m_Connection     = dataSource.CreateConnection();

            if (isolationLevel == null)
            {
                m_Transaction = m_Connection.BeginTransaction();
            }
            else
            {
                m_Transaction = m_Connection.BeginTransaction(isolationLevel.Value);
            }

            if (forwardEvents)
            {
                ExecutionStarted  += (sender, e) => dataSource.OnExecutionStarted(e);
                ExecutionFinished += (sender, e) => dataSource.OnExecutionFinished(e);
                ExecutionError    += (sender, e) => dataSource.OnExecutionError(e);
                ExecutionCanceled += (sender, e) => dataSource.OnExecutionCanceled(e);
            }
            AuditRules = dataSource.AuditRules;
            UserValue  = dataSource.UserValue;
        }
Пример #6
0
        /// <summary>
        /// Builds a connection string based on the connection settings.
        /// </summary>
        private string BuildConnectionsString()
        {
            DataSourceType dataSourceType = (DataSourceType)cbDataSourceType.SelectedIndex;

            DbConnSettings connSettings = new DbConnSettings()
            {
                Server   = txtServer.Text,
                Database = txtDatabase.Text,
                User     = txtUser.Text,
                Password = txtPassword.Text
            };

            switch (dataSourceType)
            {
            case DataSourceType.MSSQL:
                return(SqlDataSource.BuildSqlConnectionString(connSettings));

            case DataSourceType.Oracle:
                return(OraDataSource.BuildOraConnectionString(connSettings));

            case DataSourceType.PostgreSQL:
                return(PgSqlDataSource.BuildPgSqlConnectionString(connSettings));

            case DataSourceType.MySQL:
                return(MySqlDataSource.BuildMySqlConnectionString(connSettings));

            case DataSourceType.OLEDB:
                return(OleDbDataSource.BuildOleDbConnectionString(connSettings));

            default:
                return("");
            }
        }
Пример #7
0
        private static void MyCompiledTestFailure()
        {
            var dataSource = MySqlDataSource.CreateFromConfig("MySqlTestDatabase");

            dataSource.TestConnection();

            var sql = "INSERT INTO hr.employee (`FirstName`, `LastName`, `ManagerKey`, `MiddleName`, `Title`, `UpdatedDate`) VALUES (@FirstName, @LastName, @ManagerKey, @MiddleName, @Title, @UpdatedDate);SELECT `CreatedDate`, `EmployeeKey`, `FirstName`, `LastName`, `ManagerKey`, `MiddleName`, `Title`, `UpdatedDate` FROM `hr`.`employee` WHERE `EmployeeKey` = LAST_INSERT_ID();";

            var con = new MySqlConnection(ConfigurationManager.ConnectionStrings["MySqlTestDatabase"].ConnectionString);

            con.Open();

            var cmd = new MySqlCommand(sql, con);

            cmd.Parameters.AddWithValue("@FirstName", "Test");
            cmd.Parameters.AddWithValue("@LastName", "Employee636768087033711525");
            cmd.Parameters.AddWithValue("@ManagerKey", DBNull.Value);
            cmd.Parameters.AddWithValue("@MiddleName", DBNull.Value);
            cmd.Parameters.AddWithValue("@Title", "Mail Room");
            cmd.Parameters.AddWithValue("@UpdatedDate", DBNull.Value);

            var reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                var result = Load(reader);
            }
        }
Пример #8
0
 //public string TableFunction2Name { get { return "Sales.CustomersByStateInline"; } }
 public MySqlDataSource AttachRules(MySqlDataSource source)
 {
     return(source.WithRules(
                new DateTimeRule("CreatedDate", DateTimeKind.Local, OperationTypes.Insert),
                new DateTimeRule("UpdatedDate", DateTimeKind.Local, OperationTypes.InsertOrUpdate),
                new UserDataRule("CreatedByKey", "EmployeeKey", OperationTypes.Insert),
                new UserDataRule("UpdatedByKey", "EmployeeKey", OperationTypes.InsertOrUpdate),
                new ValidateWithValidatable(OperationTypes.InsertOrUpdate)
                ));
 }
Пример #9
0
    //public string TableFunction1Name { get { return "Sales.CustomersByState"; } }
    public MySqlDataSource AttachSoftDeleteRulesWithUser(MySqlDataSource source)
    {
        var currentUser1 = source.From(EmployeeTableName).WithLimits(1).ToObject <Employee>().Execute();

        return(source.WithRules(
                   new SoftDeleteRule("DeletedFlag", true),
                   new UserDataRule("DeletedByKey", "EmployeeKey", OperationTypes.Delete),
                   new DateTimeRule("DeletedDate", DateTimeKind.Local, OperationTypes.Delete)
                   ).WithUser(currentUser1));
    }
Пример #10
0
        internal MySqlOpenDataSource(MySqlDataSource dataSource, MySqlConnection connection, MySqlTransaction transaction) : base(new MySqlDataSourceSettings() { DefaultCommandTimeout = dataSource.DefaultCommandTimeout, StrictMode = dataSource.StrictMode, SuppressGlobalEvents = dataSource.SuppressGlobalEvents })
        {
            if (connection == null)
            {
                throw new ArgumentNullException(nameof(connection), $"{nameof(connection)} is null.");
            }

            m_BaseDataSource = dataSource;
            m_Connection     = connection;
            m_Transaction    = transaction;
        }
Пример #11
0
        internal MySqlDataSourceSettings(MySqlDataSource dataSource, bool forwardEvents)
        {
            if (dataSource == null)
            {
                throw new ArgumentNullException(nameof(dataSource), $"{nameof(dataSource)} is null.");
            }

            DefaultCommandTimeout = dataSource.DefaultCommandTimeout;
            StrictMode            = dataSource.StrictMode;
            SuppressGlobalEvents  = dataSource.SuppressGlobalEvents || forwardEvents;
        }
Пример #12
0
    internal MySqlOpenDataSource(MySqlDataSource dataSource, MySqlConnection connection, MySqlTransaction?transaction) : base(new MySqlDataSourceSettings(dataSource)
                                                                                                                              )
    {
        if (connection == null)
        {
            throw new ArgumentNullException(nameof(connection), $"{nameof(connection)} is null.");
        }

        m_BaseDataSource = dataSource;
        m_Connection     = connection;
        m_Transaction    = transaction;
    }
Пример #13
0
        /// <summary>
        /// 获得数据,只有数据列少时用他
        /// </summary>
        /// <param name="id"></param>
        /// <param name="objs"></param>
        /// <returns></returns>
        public IDataReader getDataRead(string id, Object objs)
        {
            resultSql = "";
            daoStruct = parseDao.ObtainConfig(id);
            if (daoStruct.DbType.Length <= 0 || daoStruct.ConStr.Length <= 0 || daoStruct.SqlStr.Length <= 0)
            {
                throw new Exception("配置参数不全");
            }
            string sql = setSql(objs, daoStruct.SqlStr);

            resultSql = sql;
            if (sql.Length <= 0)
            {
                throw new Exception("构造SQL语句出错");
            }
            IDataSource   dataSource = null;
            List <Object> objlist    = new List <Object>();

            switch (daoStruct.DbType)
            {
            case "oracle":
                dataSource = new OracleDataSource(daoStruct);
                break;

            case "mysql":
                dataSource = new MySqlDataSource(daoStruct);
                break;

            case "sql":
                dataSource = new SqlDataSource(daoStruct);
                break;

            case "access":
                dataSource = new AccessDataSource(daoStruct);
                break;

            case "sqllite":
                dataSource = new SqlLiteDataSource(daoStruct);
                break;
            }
            if (dataSource != null)
            {
                return(dataSource.GetDataRead(sql));
            }
            else
            {
                return(null);
            }
        }
Пример #14
0
 static TestBase()
 {
     Setup.AssemblyInit();
     foreach (ConnectionStringSettings con in ConfigurationManager.ConnectionStrings)
     {
         var ds = new MySqlDataSource(con.Name, con.ConnectionString);
         if (s_PrimaryDataSource == null)
         {
             s_PrimaryDataSource       = ds;
             s_PrimaryConnectionString = con.ConnectionString;
         }
         s_DataSources.Add(con.Name, ds);
     }
     BuildEmployeeSearchKey1000(s_PrimaryDataSource);
 }
Пример #15
0
        public static IDataSource Create(DataSourceInfo dataSourceInfo)
        {
            var datasourceType = dataSourceInfo.DataSourceType.ToLower();

            if (datasourceType == "pgsql" || datasourceType == "postgresql")
            {
                var datasource = new PgSqlDataSource(dataSourceInfo);
                return(datasource);
            }
            if (datasourceType == "mysql")
            {
                var datasource = new MySqlDataSource(dataSourceInfo);
                return(datasource);
            }
            throw new NotSupportedException($"The database type '{dataSourceInfo.DataSourceType}' is not supported");
        }
Пример #16
0
    /// <summary>
    /// Initializes a new instance of the <see cref="MySqlTransactionalDataSource" /> class.
    /// </summary>
    /// <param name="dataSource">The data source.</param>
    /// <param name="forwardEvents">if set to <c>true</c> [forward events].</param>
    /// <param name="connection">The connection.</param>
    /// <param name="transaction">The transaction.</param>
    internal MySqlTransactionalDataSource(MySqlDataSource dataSource, bool forwardEvents, MySqlConnection connection, MySqlTransaction transaction)
        : base(new MySqlDataSourceSettings(dataSource, forwardEvents))
    {
        Name = dataSource.Name;

        m_BaseDataSource = dataSource;
        m_Connection     = connection;
        m_Transaction    = transaction;

        if (forwardEvents)
        {
            ExecutionStarted  += (sender, e) => dataSource.OnExecutionStarted(e);
            ExecutionFinished += (sender, e) => dataSource.OnExecutionFinished(e);
            ExecutionError    += (sender, e) => dataSource.OnExecutionError(e);
            ExecutionCanceled += (sender, e) => dataSource.OnExecutionCanceled(e);
        }
        AuditRules = dataSource.AuditRules;
        UserValue  = dataSource.UserValue;
    }
Пример #17
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MySqlTransactionalDataSource" /> class.
        /// </summary>
        /// <param name="dataSource">The data source.</param>
        /// <param name="forwardEvents">if set to <c>true</c> [forward events].</param>
        /// <param name="connection">The connection.</param>
        /// <param name="transaction">The transaction.</param>
        internal MySqlTransactionalDataSource(MySqlDataSource dataSource, bool forwardEvents, MySqlConnection connection, MySqlTransaction transaction)
            : base(new MySqlDataSourceSettings {
            DefaultCommandTimeout = dataSource.DefaultCommandTimeout, StrictMode = dataSource.StrictMode, SuppressGlobalEvents = dataSource.SuppressGlobalEvents || forwardEvents
        })
        {
            Name = dataSource.Name;

            m_BaseDataSource = dataSource;
            m_Connection     = connection;
            m_Transaction    = transaction;

            if (forwardEvents)
            {
                ExecutionStarted  += (sender, e) => dataSource.OnExecutionStarted(e);
                ExecutionFinished += (sender, e) => dataSource.OnExecutionFinished(e);
                ExecutionError    += (sender, e) => dataSource.OnExecutionError(e);
                ExecutionCanceled += (sender, e) => dataSource.OnExecutionCanceled(e);
            }
            AuditRules = dataSource.AuditRules;
            UserValue  = dataSource.UserValue;
        }
Пример #18
0
    public MySqlDataSource WithSettings(MySqlDataSourceSettings?settings)
    {
        var mergedSettings = new MySqlDataSourceSettings()
        {
            DefaultCommandTimeout = settings?.DefaultCommandTimeout ?? DefaultCommandTimeout,
            SuppressGlobalEvents  = settings?.SuppressGlobalEvents ?? SuppressGlobalEvents,
            StrictMode            = settings?.StrictMode ?? StrictMode,
            SequentialAccessMode  = settings?.SequentialAccessMode ?? SequentialAccessMode
        };
        var result = new MySqlDataSource(Name, m_ConnectionBuilder, mergedSettings, m_DatabaseMetadata, m_Cache, m_ExtensionCache);

        result.m_DatabaseMetadata = m_DatabaseMetadata;
        result.AuditRules         = AuditRules;
        result.UserValue          = UserValue;

        result.ExecutionStarted  += (sender, e) => OnExecutionStarted(e);
        result.ExecutionFinished += (sender, e) => OnExecutionFinished(e);
        result.ExecutionError    += (sender, e) => OnExecutionError(e);
        result.ExecutionCanceled += (sender, e) => OnExecutionCanceled(e);

        return(result);
    }
Пример #19
0
        private static void MySqlMetadata()
        {
            var dataSource = MySqlDataSource.CreateFromConfig("MySqlTestDatabase");

            dataSource.TestConnection();

            /*
             * var table1 = dataSource.DatabaseMetadata.GetTableOrView("Film");
             * Console.WriteLine($"{table1.Name} Columns {table1.Columns.Count}");
             * Console.WriteLine();
             *
             * dataSource.TestConnection();
             * dataSource.DatabaseMetadata.PreloadTables();
             *
             * foreach (var item in dataSource.DatabaseMetadata.GetTablesAndViews())
             * {
             *  var x = item.IsTable ? "TABLE" : "VIEW";
             *  Console.WriteLine($"{item.Name} {x} Columns {item.Columns.Count}");
             * }
             *
             * Console.WriteLine();
             *
             * dataSource.DatabaseMetadata.PreloadStoredProcedures();
             *
             * foreach (var item in dataSource.DatabaseMetadata.GetStoredProcedures())
             * {
             *  Console.WriteLine($"{item.Name} Parameters {item.Parameters.Count}");
             * }
             * Console.WriteLine();
             *
             * dataSource.DatabaseMetadata.PreloadScalarFunctions();
             *
             * foreach (var item in dataSource.DatabaseMetadata.GetScalarFunctions())
             * {
             *  Console.WriteLine($"{item.Name} Parameters {item.Parameters.Count}");
             * }
             * Console.WriteLine();
             */
        }
Пример #20
0
    internal static void SetupTestBase()
    {
        if (s_PrimaryDataSource != null)
        {
            return;             //run once check
        }
        Setup.CreateDatabase();

        var configuration = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory).AddJsonFile("appsettings.json").Build();

        foreach (var con in configuration.GetSection("ConnectionStrings").GetChildren())
        {
            var ds = new MySqlDataSource(con.Key, con.Value);
            if (s_PrimaryDataSource == null)
            {
                s_PrimaryDataSource = ds;
            }

            s_DataSources.Add(con.Key, ds);
        }
        BuildEmployeeSearchKey1000(s_PrimaryDataSource);
    }
Пример #21
0
        public void disposeConn(string id)
        {
            try
            {
                daoStruct = parseDao.ObtainConfig(id);
                IDataSource dataSource;
                switch (daoStruct.DbType)
                {
                case "oracle":
                    dataSource = new OracleDataSource(daoStruct);
                    dataSource.DisposeConn();
                    break;

                case "mysql":
                    dataSource = new MySqlDataSource(daoStruct);
                    dataSource.DisposeConn();
                    break;

                case "sql":
                    dataSource = new SqlDataSource(daoStruct);
                    dataSource.DisposeConn();
                    break;

                case "access":
                    dataSource = new AccessDataSource(daoStruct);
                    dataSource.DisposeConn();
                    break;

                case "sqllite":
                    dataSource = new SqlLiteDataSource(daoStruct);
                    dataSource.DisposeConn();
                    break;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Пример #22
0
        /// <summary>
        /// 查询数据根据SQL语句
        /// </summary>
        /// <param name="id">SQL编号</param>
        /// <param name="sql">SQL语句</param>
        /// <returns>数据结果</returns>
        public DataSet getDataSet(string id, string sql)
        {
            resultSql = sql;
            DataSet     rtnDataSet = new DataSet();
            IDataSource dataSource = null;

            daoStruct = parseDao.ObtainConfig(id);
            switch (daoStruct.DbType)
            {
            case "oracle":
                dataSource = new OracleDataSource(daoStruct);
                break;

            case "mysql":
                dataSource = new MySqlDataSource(daoStruct);
                break;

            case "sql":
                dataSource = new SqlDataSource(daoStruct);
                break;

            case "access":
                dataSource = new AccessDataSource(daoStruct);
                break;

            case "sqllite":
                dataSource = new SqlLiteDataSource(daoStruct);
                break;
            }
            if (dataSource != null)
            {
                return(dataSource.SelectExecute(sql));
            }
            else
            {
                return(null);
            }
        }
Пример #23
0
        /// <summary>
        /// 备份数据库
        /// </summary>
        /// <param name="path"></param>
        /// <param name="database"></param>
        public void BackupData(string id, string path, string database)
        {
            daoStruct = parseDao.ObtainConfig(id);
            string      backupsql  = "";
            IDataSource dataSource = null;

            switch (daoStruct.DbType)
            {
            case "oracle":
                dataSource = new OracleDataSource(daoStruct);
                break;

            case "sql":
                backupsql  = "BACKUP DATABASE [" + database + "] TO DISK =N'" + path + "' WITH NOFORMAT, INIT, NAME=N'" + database + "-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10";
                dataSource = new SqlDataSource(daoStruct);
                break;

            case "mysql":
                dataSource = new MySqlDataSource(daoStruct);
                break;
            }
            dataSource.Backup(backupsql);
        }
Пример #24
0
        /// <summary>
        /// Prepare DML
        /// </summary>
        /// <param name="ids">SQL语句ID编号</param>
        /// <param name="objs">输入对象</param>
        /// <returns></returns>
        public string execPrepare(List <string> ids, List <Object> objs)
        {
            try
            {
                resultSql = "";
                List <string> idlist = new List <string>();
                idlist = ids;
                List <Object> objectlist = new List <Object>();
                objectlist = objs;
                if (idlist.Count <= 0)
                {
                    throw new Exception("缺少参数");
                }
                if (idlist.Count != objectlist.Count)
                {
                    throw new Exception("参数数量不一致");
                }
                List <string>           sqls     = new List <string>();
                List <List <DTOClass> > dtolists = new List <List <DTOClass> >();
                for (int i = 0; i < idlist.Count; i++)
                {
                    daoStruct = parseDao.ObtainConfig(idlist[i]);
                    if (daoStruct.DbType.Length <= 0 || daoStruct.ConStr.Length <= 0 || daoStruct.SqlStr.Length <= 0)
                    {
                        throw new Exception("配置参数不全");
                    }
                    string          sql     = daoStruct.SqlStr;
                    List <DTOClass> dtolist = setDto(objectlist[i]);
                    if (sql.Length <= 0)
                    {
                        throw new Exception("构造SQL语句出错");
                    }
                    sqls.Add(sql);
                    dtolists.Add(dtolist);
                    if (resultSql != "")
                    {
                        resultSql += "\r\n";
                    }
                    resultSql += sql;
                }
                if (daoStruct.IsLog)
                {
                    WriteLogin.writeDBLog(daoStruct.Desc, resultSql);
                }
                IDataSource dataSource = null;
                switch (daoStruct.DbType)
                {
                case "oracle":
                    dataSource = new OracleDataSource(daoStruct);
                    break;

                case "mysql":
                    dataSource = new MySqlDataSource(daoStruct);
                    break;

                case "sql":
                    dataSource = new SqlDataSource(daoStruct);
                    break;

                case "access":
                    dataSource = new AccessDataSource(daoStruct);
                    break;

                case "sqllite":
                    dataSource = new SqlLiteDataSource(daoStruct);
                    break;
                }
                dataSource.PrepareExcute(sqls, dtolists);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            return("");
        }
Пример #25
0
 public MySqlDataSourceView(IPSqlDataSource owner, string name, System.Web.HttpContext context)
     : base(owner, name, context)
 {
     _owner = owner;
 }
Пример #26
0
        /// <summary>
        /// 多DML语句操作
        /// </summary>
        /// <param name="ids">SQL语句ID编号列表</param>
        /// <param name="objs">输入输出对象列表</param>
        /// <returns></returns>
        public string execTranctionDml(List <string> ids, List <Object> objs)
        {
            resultSql = "";
            List <string> idlist = new List <string>();

            idlist = ids;
            List <Object> objectlist = new List <Object>();

            objectlist = objs;
            if (idlist.Count <= 0)
            {
                throw new Exception("缺少参数");
            }
            if (idlist.Count != objectlist.Count)
            {
                throw new Exception("参数数量不一致");
            }
            List <string> sqls = new List <string>();

            for (int i = 0; i < idlist.Count; i++)
            {
                daoStruct = parseDao.ObtainConfig(idlist[i]);
                if (daoStruct.DbType.Length <= 0 || daoStruct.ConStr.Length <= 0 || daoStruct.SqlStr.Length <= 0)
                {
                    throw new Exception("配置参数不全");
                }
                string sql = "";
                sql = setSql(objectlist[i], daoStruct.SqlStr);
                if (sql.Length <= 0)
                {
                    throw new Exception("构造SQL语句出错");
                }
                sqls.Add(sql);
                if (resultSql != "")
                {
                    resultSql += "\r\n";
                }
                resultSql += sql;
            }
            if (daoStruct.IsLog)
            {
                WriteLogin.writeDBLog(daoStruct.Desc, resultSql);
            }
            IDataSource dataSource = null;

            switch (daoStruct.DbType)
            {
            case "oracle":
                dataSource = new OracleDataSource(daoStruct);
                break;

            case "mysql":
                dataSource = new MySqlDataSource(daoStruct);
                break;

            case "sql":
                dataSource = new SqlDataSource(daoStruct);
                break;

            case "access":
                dataSource = new AccessDataSource(daoStruct);
                break;

            case "sqllite":
                dataSource = new SqlLiteDataSource(daoStruct);
                break;
            }
            dataSource.TranctionExcute(sqls);
            //记录SQL

            return("");
        }