public static BaseService CreateInstance(DbBaseType dbType) { var types = Assembly.GetExecutingAssembly().GetTypes().Where(m => typeof(BaseService).IsAssignableFrom(m) && !m.IsAbstract && m.IsClass && !m.IsInterface).ToList(); BaseService service = null; for (int i = 0; i < types.Count; i++) { var item = types[i]; var value = item.GetProperty("DbBaseType"); var instaceValue = Activator.CreateInstance(item); var propItem = value.GetValue(instaceValue, null)?.ToString(); if (dbType.ToString() == propItem) { service = instaceValue as BaseService; break; } } return(service); }
private static string ParseType(string typename, DbBaseType type) { string res = string.Empty; switch (type) { case DbBaseType.Oracle: res = OracleParseType(typename); break; case DbBaseType.SqlServer: res = SQLServerParseType(typename); break; case DbBaseType.MySql: res = MySQLServerParseType(typename); break; } return(res); }
/// <summary> /// 登陆 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnLogin_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(textAddress.Text)) { MessageBox.Show("数据库链接字符串不能为空"); return; } if (string.IsNullOrWhiteSpace(comboBox2.Text)) { MessageBox.Show("数据库类型不能为空"); return; } this.label3.Visible = true; label3.Text = "数据库正在连接中,请稍后..."; var typeName = this.comboBox2.Text; DbInstaceType = CodeExtendsition.GetBaseType(typeName); var dbInstance = DbFactory.CreateInstance(DbInstaceType); ConnectionStr = textAddress.Text; var result = Task.Factory.StartNew(() => ConnectionDb(dbInstance)); //dbInstance.ConnectionDb(this.textAddress.Text); result.Wait(); var dataRes = result.Result; if (dataRes.Success) { MainFrom me = new MainFrom(); me.Show(); this.Hide(); } else { this.label3.Text = "数据库连接失败"; MessageBox.Show(dataRes.Message); } }
/// <summary> /// 初始化数据库类型 0 - SqlServer; 1 - Oracle; 2 - MySql /// </summary> /// <param name="dBType">0 - SqlServer; 1 - Oracle; 2 - MySql</param> public static void Init(DbBaseType dBType) { DBType = (int)dBType; }