/// <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 = ""; } } }
/// <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(""); }
/// <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; }
/// <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(""); } }
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); } }
//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) )); }
//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)); }
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; }
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; }
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; }
/// <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); } }
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); }
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"); }
/// <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; }
/// <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; }
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); }
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(); */ }
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); }
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); } }
/// <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); } }
/// <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); }
/// <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(""); }
public MySqlDataSourceView(IPSqlDataSource owner, string name, System.Web.HttpContext context) : base(owner, name, context) { _owner = owner; }
/// <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(""); }