public static List <DbServerInfo> ConvertHistoryToModel() { var historyConnStrList = ReadHistoryData(); var connStrModels = new List <DbServerInfo>(); foreach (var item in historyConnStrList) { var arr = item.Split(';'); var model = new DbServerInfo(); for (var i = 0; i < arr.Length; i++) { switch (i) { case 0: { model.Database = arr[i].Split('=')[1]; break; } case 1: { model.Ip = arr[i].Split('=')[1]; break; } case 2: { model.UserId = arr[i].Split('=')[1]; break; } case 3: { model.Password = arr[i].Split('=')[1]; break; } case 5: { model.Encoding = arr[i].Split('=')[1]; break; } case 6: { model.TcpIpPort = arr[i].Split('=')[1]; break; } case 7: { model.DatabaseType = arr[i].Split('=')[1]; break; } } } connStrModels.Add(model); } return(connStrModels); }
public override string initExport(ExportParam param, int dbServerId) { string dbName = ""; string time = ""; List <IMongoQuery> queryList = new List <IMongoQuery>(); Dictionary <string, object> cond = param.m_condition; if (cond != null) { DbServerInfo info = ResMgr.getInstance().getDbInfo(param.m_dbServerIP); if (info != null) { dbName = info.m_serverName; } if (cond.ContainsKey("time")) { time = Convert.ToString(cond["time"]); DateTime mint = DateTime.Now, maxt = DateTime.Now; Tool.splitTimeStr(time, ref mint, ref maxt); IMongoQuery imq1 = Query.LT("genTime", BsonValue.Create(maxt)); IMongoQuery imq2 = Query.GTE("genTime", BsonValue.Create(mint)); IMongoQuery imq3 = Query.GT("rechargeCount", 0); queryList.Add(Query.And(imq1, imq2, imq3)); time = mint.ToString("yyyy年MM月dd日 HH时mm分ss秒") + "~" + maxt.ToString("yyyy年MM月dd日 HH时mm分ss秒"); } } m_imq = queryList.Count > 0 ? Query.And(queryList) : null; return(string.Format("充值用户统计-{0}-{1}.csv", dbName, time)); }
public override string initExport(ExportParam param, int dbServerId) { string dbName = ""; List <IMongoQuery> queryList = new List <IMongoQuery>(); Dictionary <string, object> cond = param.m_condition; if (cond != null) { DbServerInfo info = ResMgr.getInstance().getDbInfo(param.m_dbServerIP); if (info != null) { dbName = info.m_serverName; } if (cond.ContainsKey("sel")) { m_sel = Convert.ToInt32(cond["sel"]); } if (cond.ContainsKey("count")) { m_count = Convert.ToInt32(cond["count"]); } } string time = DateTime.Now.ToString("yyyy年MM月dd日"); return(string.Format("{0}预警-{1}-{2}.csv", m_sel == 0 ? "金币" : "礼券", time, dbName)); }
// 根据地址名称,取得下标 public int getDbId(string pools, bool special = false) { if (m_dbServer.ContainsKey(pools)) { DbServerInfo dbInfo = ResMgr.getInstance().getDbInfo(pools); int index = m_dbServer[pools]; if (m_mongoServer[index] == null) { m_mongoServer[index] = create(pools, dbInfo, special); if (m_mongoServer[index] == null) { // LogMgr.log.ErrorFormat("getDbId函数,无法联接数据库!"); return(-1); } } else { bool res = m_mongoServer[index].testDBConnect(); if (!res) { m_mongoServer[index] = null; index = -1; } } return(index); } // LogMgr.log.ErrorFormat("没有找到地址:{0},将采用原地址"); return(-1); }
// 传入ip地址 192.169.1.12 public bool init(string url, DbServerInfo dbInfo, bool special = false) { m_client = new MongodbHelper[DbName.DB_NAME_MAX]; // 是账号数据库,这里只创建一个,即可 if (url == WebConfigurationManager.AppSettings["account"] && special) { m_client[DbName.DB_ACCOUNT] = new MongodbHelper(); m_client[DbName.DB_ACCOUNT].MongoDb = create(m_dbName[DbName.DB_ACCOUNT], url); // if (url == WebConfigurationManager.AppSettings["payment"] && special) { // 充值数据库只连接这个 m_client[DbName.DB_PAYMENT] = new MongodbHelper(); m_client[DbName.DB_PAYMENT].MongoDb = create(m_dbName[DbName.DB_PAYMENT], url); } } else // 其他游戏相关数据库 { } /*for (int i = 0; i < DbName.DB_NAME_MAX; i++) * { * m_client[i] = new MongodbHelper(); * m_client[i].MongoDb = create(m_dbName[i], url); * }*/ bool res = testDBConnect(); if (res) { IndexMgr.getInstance().createIndex(this, url); } return(res); }
public ExportEntityViewModel(ITableInfoService tableInfoService, IColumnInfoService columnInfoService) { _tableInfoService = tableInfoService; _columnInfoService = columnInfoService; _dbServerHistoryItems = DbServerInfoFile.GetDbServerInfoHistoryItems(); _currentDbServerInfoItem = new DbServerInfo(); }
private void allocPlayerDb(string url, DbServerInfo dbInfo) { m_client[DbName.DB_PLAYER] = new MongodbHelper(); m_client[DbName.DB_PLAYER].MongoDb = create(m_dbName[DbName.DB_PLAYER], url); m_client[DbName.DB_PUMP] = new MongodbHelper(); m_client[DbName.DB_PUMP].MongoDb = create(m_dbName[DbName.DB_PUMP], dbInfo.m_logDbIp); m_client[DbName.DB_GAME] = new MongodbHelper(); m_client[DbName.DB_GAME].MongoDb = create(m_dbName[DbName.DB_GAME], url); }
internal Db(string DatabaseName, DbServerInfo ServerInfo) { ConnectionString = $"Server={ServerInfo.Host};User Id={ServerInfo.Username};Port={ServerInfo.Port};Password={ServerInfo.Password};Database={DatabaseName};Pooling={ServerInfo.Pooling};CharSet=utf8;"; if (ServerInfo.Pooling) { ConnectionString += $"Min Pool Size={ServerInfo.MinPoolSize};Max Pool Size={ServerInfo.MaxPoolSize}"; } Logger = new ConsoleLogger(); }
// 传入ip地址 192.169.1.12 public bool init(string url, DbServerInfo dbInfo, bool special = false) { m_client = new MongodbHelper[DbName.DB_NAME_MAX]; // 是账号数据库,这里只创建一个,即可 if (url == WebConfigurationManager.AppSettings["account"] + "_account" && special) { string tmpURL = WebConfigurationManager.AppSettings["account"]; m_client[DbName.DB_ACCOUNT] = new MongodbHelper(); m_client[DbName.DB_ACCOUNT].MongoDb = create(m_dbName[DbName.DB_ACCOUNT], tmpURL); // if (url == WebConfigurationManager.AppSettings["payment"] && special) { // 充值数据库只连接这个 m_client[DbName.DB_PAYMENT] = new MongodbHelper(); m_client[DbName.DB_PAYMENT].MongoDb = create(m_dbName[DbName.DB_PAYMENT], tmpURL); } m_client[DbName.DB_CONFIG] = new MongodbHelper(); m_client[DbName.DB_CONFIG].MongoDb = create(m_dbName[DbName.DB_CONFIG], tmpURL); } // else if (url == WebConfigurationManager.AppSettings["payment"] && special) // { // // 充值数据库只连接这个 // m_client[DbName.DB_PAYMENT] = new MongodbHelper(); // m_client[DbName.DB_PAYMENT].MongoDb = create(m_dbName[DbName.DB_PAYMENT], url); // } else // 其他游戏相关数据库 { m_client[DbName.DB_PLAYER] = new MongodbHelper(); m_client[DbName.DB_PLAYER].MongoDb = create(m_dbName[DbName.DB_PLAYER], url); m_client[DbName.DB_PUMP] = new MongodbHelper(); m_client[DbName.DB_PUMP].MongoDb = create(m_dbName[DbName.DB_PUMP], dbInfo.m_logDbIp); m_client[DbName.DB_GAME] = new MongodbHelper(); m_client[DbName.DB_GAME].MongoDb = create(m_dbName[DbName.DB_GAME], url); } /*for (int i = 0; i < DbName.DB_NAME_MAX; i++) * { * m_client[i] = new MongodbHelper(); * m_client[i].MongoDb = create(m_dbName[i], url); * }*/ bool res = testDBConnect(); if (res) { IndexMgr.getInstance().createIndex(this, url); } return(res); }
public override string initExport(ExportParam param, int dbServerId) { string account = ""; int playerId = -1; string dbName = ""; string time = ""; List <IMongoQuery> queryList = new List <IMongoQuery>(); Dictionary <string, object> cond = param.m_condition; if (cond != null) { DbServerInfo info = ResMgr.getInstance().getDbInfo(param.m_dbServerIP); if (info != null) { dbName = info.m_serverName; } if (cond.ContainsKey("playerId")) { playerId = Convert.ToInt32(cond["playerId"]); queryList.Add(Query.EQ("playerId", BsonValue.Create(playerId))); Dictionary <string, object> ret = getPlayerProperty(playerId, dbServerId, m_playerFields); if (ret != null) { account = Convert.ToString(ret["account"]); } } if (cond.ContainsKey("taskId")) { int taskId = Convert.ToInt32(cond["taskId"]); queryList.Add(Query.EQ("taskId", BsonValue.Create(taskId))); } if (cond.ContainsKey("time")) { time = Convert.ToString(cond["time"]); DateTime mint = DateTime.Now, maxt = DateTime.Now; Tool.splitTimeStr(time, ref mint, ref maxt); IMongoQuery imq1 = Query.LT("genTime", BsonValue.Create(maxt)); IMongoQuery imq2 = Query.GTE("genTime", BsonValue.Create(mint)); queryList.Add(Query.And(imq1, imq2)); time = mint.ToString("yyyy年MM月dd日 HH时mm分ss秒") + "~" + maxt.ToString("yyyy年MM月dd日 HH时mm分ss秒"); } } m_imq = queryList.Count > 0 ? Query.And(queryList) : null; return(getExportFileName(playerId, account, dbName, time)); }
private void tsbConnect_Click(object sender, EventArgs e) { try { //非空判断 string strTableName = cbbTableName.Text.Trim(); string strWhere = rtbWhere.Text.Trim(); if (string.IsNullOrEmpty(strTableName) && string.IsNullOrEmpty(strWhere)) { MsgHelper.ShowErr("表名和Where条件不能同时为空!"); return; } //得到服务器对象 _dbServer = uC_DbConnection1.GetDbServerInfo(); if (_dbServer == null) { return; } //得到数据库访问对象 ICustomDataAccess customDataAccess = new CustomDataAccess(_dbServer.DatabaseType, _dbServer); //构造查询SQL if (string.IsNullOrEmpty(strWhere)) //Where条件为空 { _strMainSql = "SELECT * FROM " + strTableName; } else if (string.IsNullOrEmpty(strTableName))//表名为空,那么Where中为自定义SQL { _strMainSql = strWhere; } else //表名和Where条件都不为空,那么拼接语句 { _strMainSql = "SELECT * FROM " + strTableName + " WHERE " + strWhere; } //查询数据 DataTable dtMain = customDataAccess.DataAccess.QueryHadParamSqlData(_strMainSql, _dicQuery); dtMain.TableName = _strTableName; bsTable.DataSource = dtMain; //设置数据源 GlobalValue.Instance.SetPublicDataSource(new DataTable[] { dtMain }); dgvTableList.DataSource = bsTable; } catch (Exception ex) { MsgHelper.ShowErr(ex.Message); } }
private void setUpDbServerInfo() { XmlConfig cfg = getRes("dbserver.xml"); List <Dictionary <string, object> > t = cfg.getTable("server"); for (int i = 0; i < t.Count; i++) { DbServerInfo info = new DbServerInfo(); info.m_serverIp = Convert.ToString(t[i]["serverIp"]); info.m_serverId = Convert.ToInt32(t[i]["serverId"]); info.m_serverName = Convert.ToString(t[i]["serverName"]); info.m_logDbIp = Convert.ToString(t[i]["logDbIp"]); m_dbServer.Add(info.m_serverIp, info); m_dbServerById.Add(info.m_serverId, info); } }
// 传入ip地址 192.169.1.12 public bool init(string url, DbServerInfo dbInfo, bool special = false) { m_client = new MongodbHelper[DbName.DB_NAME_MAX]; XmlConfig xml = ResMgr.getInstance().getRes("dbserver.xml"); string accDbId = xml.getString("account", ""); // 是账号数据库,这里只创建一个,即可 if (url == accDbId) { m_client[DbName.DB_ACCOUNT] = new MongodbHelper(); m_client[DbName.DB_ACCOUNT].MongoDb = create(m_dbName[DbName.DB_ACCOUNT], url); //if (url == WebConfigurationManager.AppSettings["payment"] && special) { // 充值数据库只连接这个 // m_client[DbName.DB_PAYMENT] = new MongodbHelper(); // m_client[DbName.DB_PAYMENT].MongoDb = create(m_dbName[DbName.DB_PAYMENT], url); } m_client[DbName.DB_CONFIG] = new MongodbHelper(); m_client[DbName.DB_CONFIG].MongoDb = create(m_dbName[DbName.DB_CONFIG], url); if (isSameAccPlayerdb()) { allocPlayerDb(url, dbInfo); } } // else if (url == WebConfigurationManager.AppSettings["payment"] && special) // { // 充值数据库只连接这个 // m_client[DbName.DB_PAYMENT] = new MongodbHelper(); // m_client[DbName.DB_PAYMENT].MongoDb = create(m_dbName[DbName.DB_PAYMENT], url); // } else // 其他游戏相关数据库 { allocPlayerDb(url, dbInfo); } bool res = testDBConnect(); if (res) { IndexMgr.getInstance().createIndex(this, url); } return(res); }
private void ckbGetTableList_CheckedChanged(object sender, EventArgs e) { if (ckbGetTableList.Checked) { _dbServer = uC_DbConnection1.GetDbServerInfo(); if (_dbServer == null) { return; } //绑定下拉框 UIHelper.BindDropDownList(cbbTableName, uC_DbConnection1.UserTableList.Sort("TABLE_NAME"), "TABLE_NAME", "TABLE_NAME", false); } else { cbbTableName.DataSource = null; } }
// 传入ip地址 192.169.1.12 public bool init(string url, DbServerInfo dbInfo, bool special = false) { m_client = new MongodbHelper[DbName.DB_NAME_MAX]; XmlConfig xml = ResMgr.getInstance().getRes("dbserver.xml"); string acc = xml.getString("account", ""); string pay = xml.getString("payment", ""); if (url == acc) { // 是账号数据库,这里只创建一个,即可 m_client[DbName.DB_ACCOUNT] = new MongodbHelper(); m_client[DbName.DB_ACCOUNT].MongoDb = create(m_dbName[DbName.DB_ACCOUNT], url); if (url == pay) { // 充值数据库只连接这个 m_client[DbName.DB_PAYMENT] = new MongodbHelper(); m_client[DbName.DB_PAYMENT].MongoDb = create(m_dbName[DbName.DB_PAYMENT], url); } } else if (url == pay) { // 充值数据库只连接这个 m_client[DbName.DB_PAYMENT] = new MongodbHelper(); m_client[DbName.DB_PAYMENT].MongoDb = create(m_dbName[DbName.DB_PAYMENT], url); } else // 其他游戏相关数据库 { m_client[DbName.DB_PLAYER] = new MongodbHelper(); m_client[DbName.DB_PLAYER].MongoDb = create(m_dbName[DbName.DB_PLAYER], url); m_client[DbName.DB_PUMP] = new MongodbHelper(); m_client[DbName.DB_PUMP].MongoDb = create(m_dbName[DbName.DB_PUMP], dbInfo.m_logDbIp); m_client[DbName.DB_GAME] = new MongodbHelper(); m_client[DbName.DB_GAME].MongoDb = create(m_dbName[DbName.DB_GAME], url); } /*for (int i = 0; i < DbName.DB_NAME_MAX; i++) * { * m_client[i] = new MongodbHelper(); * m_client[i].MongoDb = create(m_dbName[i], url); * }*/ return(testDBConnect()); }
private DBServer create(string url, DbServerInfo dbInfo, bool special = false) { try { DBServer tmp = new DBServer(); bool res = tmp.init(url, dbInfo, special); if (!res) { return(null); } return(tmp); } catch (System.Exception ex) { LOGW.Info("连接数据库 {0} 时发生异常,异常信息{1}!", url, ex.ToString()); } return(null); }
protected void Page_Load(object sender, EventArgs e) { GMUser user = (GMUser)Session["user"]; if (user != null) { DbServerInfo info = ResMgr.getInstance().getDbInfo(user.m_dbIP); if (info != null) { Label1.Text = "当前操作的数据库地址:" + info.m_serverName; } else { Label1.Text = "当前操作的数据库地址:" + user.m_dbIP; } user.preURL = Request.Url.AbsolutePath; } genMenu(); }
// 根据地址名称,取得下标 public int getDbId(string pools, bool special = false) { if (m_dbServer.ContainsKey(pools)) { DbServerInfo dbInfo = ResMgr.getInstance().getDbInfo(pools); int index = m_dbServer[pools]; if (m_mongoServer[index] == null) { m_mongoServer[index] = create(pools, dbInfo, special); if (m_mongoServer[index] == null) { LOGW.Info("getDbId函数,无法联接数据库!"); return(-1); } } return(index); } LOGW.Info("没有找到地址:{0},将采用原地址"); return(-1); }
private void btnLinkServer_Click(object sender, EventArgs e) { try { _dbServer = uC_DbConnection1.GetDbServerInfo(); if (_dbServer == null) { return; } _entiyBiz = new AutoEntityBiz(_dbServer.DatabaseType, _dbServer); //加载数据库 LoadTreeView(_dbServer, _entiyBiz); dgvEntityInfo.SelectionMode = DataGridViewSelectionMode.FullRowSelect; tabControl1.SelectedTab = tpgEntity; } catch (Exception exception) { MsgHelper.ShowErr(exception.Message); } }
private void cbbTargetDbType_SelectedIndexChanged(object sender, EventArgs e) { //目标数据库类型 int iDbType = int.Parse(cbbTargetDbType.SelectedValue.ToString()); DataBaseType selectDBType = (DataBaseType)iDbType; ckbMainKeyInsert.Visible = false; _dbServer = uC_DbConnection1.GetDbServerInfo(); switch (_dbServer.DatabaseType) { case DataBaseType.SqlServer: if (selectDBType == DataBaseType.SqlServer) { ckbMainKeyInsert.Visible = true; } break; case DataBaseType.Oracle: break; case DataBaseType.MySql: break; case DataBaseType.SQLite: break; case DataBaseType.PostgreSql: break; default: throw new Exception("暂不支持该数据库类型!"); //break; } //调用表名选择变化事件 cbbTableName_SelectedIndexChanged(null, null); }
public override string initExport(ExportParam param, int dbServerId) { string account = ""; int playerId = -1; string dbName = ""; string time = ""; string gameId = ""; List <IMongoQuery> queryList = new List <IMongoQuery>(); Dictionary <string, object> cond = param.m_condition; if (cond != null) { DbServerInfo info = ResMgr.getInstance().getDbInfo(param.m_dbServerIP); if (info != null) { dbName = info.m_serverName; } if (cond.ContainsKey("playerId")) { playerId = Convert.ToInt32(cond["playerId"]); queryList.Add(Query.EQ("playerId", BsonValue.Create(playerId))); Dictionary <string, object> ret = getPlayerProperty(playerId, dbServerId, m_playerFields); if (ret != null) { account = Convert.ToString(ret["account"]); } } if (cond.ContainsKey("reason")) { int reason = Convert.ToInt32(cond["reason"]); queryList.Add(Query.EQ("reason", BsonValue.Create(reason))); } if (cond.ContainsKey("itemId")) { int item = Convert.ToInt32(cond["itemId"]); queryList.Add(Query.EQ("itemId", BsonValue.Create(item))); } if (cond.ContainsKey("time")) { time = Convert.ToString(cond["time"]); DateTime mint = DateTime.Now, maxt = DateTime.Now; Tool.splitTimeStr(time, ref mint, ref maxt); IMongoQuery imq1 = Query.LT("genTime", BsonValue.Create(maxt)); IMongoQuery imq2 = Query.GTE("genTime", BsonValue.Create(mint)); queryList.Add(Query.And(imq1, imq2)); time = mint.ToString("yyyy年MM月dd日 HH时mm分ss秒") + "~" + maxt.ToString("yyyy年MM月dd日 HH时mm分ss秒"); } if (cond.ContainsKey("range")) { List <int> range = new List <int>(); string rangeStr = Convert.ToString(cond["range"]); Tool.parseNumList(rangeStr, range); IMongoQuery imq1 = Query.LTE("addValue", BsonValue.Create(range[1])); IMongoQuery imq2 = Query.GTE("addValue", BsonValue.Create(range[0])); queryList.Add(Query.And(imq1, imq2)); } if (cond.ContainsKey("gameId")) { int id = Convert.ToInt32(cond["gameId"]); queryList.Add(Query.EQ("gameId", id)); gameId = StrName.s_gameName[id]; } } m_imq = queryList.Count > 0 ? Query.And(queryList) : null; if (playerId == -1) { return(string.Format("金币钻石变化-{0}-{1}-{2}-{3}.csv", account, dbName, time, gameId)); } return(string.Format("金币钻石变化-{0}-{1}-{2}-{3}-{4}.csv", account, playerId, dbName, time, gameId)); }
public override string initExport(ExportParam param, int dbServerId) { string account = ""; int playerId = -1; string dbName = ""; int userOpDbId = -1; string time = ""; List <IMongoQuery> queryList = new List <IMongoQuery>(); Dictionary <string, object> cond = param.m_condition; if (cond != null) { m_searchTable = Convert.ToString(cond["table"]); m_plat = Convert.ToString(cond["plat"]); DbServerInfo info = ResMgr.getInstance().getDbInfo(Convert.ToString(cond["userOpDbIp"])); if (info != null) { dbName = info.m_serverName; userOpDbId = DBMgr.getInstance().getDbId(info.m_serverIp); } if (cond.ContainsKey("PlayerId")) { playerId = Convert.ToInt32(cond["PlayerId"]); queryList.Add(Query.EQ("PlayerId", BsonValue.Create(playerId))); if (userOpDbId >= 0) { Dictionary <string, object> ret = getPlayerProperty(playerId, userOpDbId, m_playerFields); if (ret != null) { account = Convert.ToString(ret["account"]); } } } /*if (cond.ContainsKey("ServerId")) * { * int serverId = Convert.ToInt32(cond["ServerId"]); * queryList.Add(Query.EQ("ServerId", BsonValue.Create(serverId))); * }*/ if (cond.ContainsKey("Account")) { account = Convert.ToString(cond["Account"]); queryList.Add(Query.EQ("Account", BsonValue.Create(account))); if (userOpDbId >= 0) { Dictionary <string, object> ret = getPlayerPropertyByAcc(account, userOpDbId, m_playerFields); if (ret != null) { playerId = Convert.ToInt32(ret["player_id"]); } } } if (cond.ContainsKey("time")) // 时间 { time = Convert.ToString(cond["time"]); DateTime mint = DateTime.Now, maxt = DateTime.Now; Tool.splitTimeStr(time, ref mint, ref maxt); IMongoQuery imq1 = Query.LT("PayTime", BsonValue.Create(maxt)); IMongoQuery imq2 = Query.GTE("PayTime", BsonValue.Create(mint)); queryList.Add(Query.And(imq1, imq2)); time = mint.ToString("yyyy年MM月dd日 HH时mm分ss秒") + "~" + maxt.ToString("yyyy年MM月dd日 HH时mm分ss秒"); } if (cond.ContainsKey("Process")) { bool result = Convert.ToBoolean(cond["Process"]); queryList.Add(Query.EQ("Process", BsonValue.Create(result))); } if (cond.ContainsKey("range")) // 范围 { string rangeStr = Convert.ToString(cond["range"]); List <int> range = new List <int>(); Tool.parseNumList(rangeStr, range); IMongoQuery timq1 = Query.LTE("RMB", BsonValue.Create(range[1])); IMongoQuery timq2 = Query.GTE("RMB", BsonValue.Create(range[0])); IMongoQuery tmpImq = Query.And(timq1, timq2); queryList.Add(tmpImq); } } m_imq = queryList.Count > 0 ? Query.And(queryList) : null; if (playerId == -1) { return(string.Format("充值记录-{0}-{1}-{2}.csv", account, dbName, time)); } return(string.Format("充值记录-{0}-{1}-{2}-{3}.csv", account, playerId, dbName, time)); }
public AutoEntityBiz(DataBaseType dbt, DbServerInfo server) { CustomDataAccess = new CustomDataAccess(dbt, server); }
public static DbServer CreateServer(DbServerInfo Info) { Manager.Cache.Build(); return(new DbServer(Info)); }
private void tsbImport_Click(object sender, EventArgs e) { try { dsExcel = new DataSet(); _dbServer = uC_DbConnection1.GetDbServerInfo(); DataTable dtMain; DataTable dtSec; if (_dbServer == null) { return; } string sTableName = cbbTableName.Text.Trim(); #region 读取数据库的表数据生成SQL处理 #region 确定SQL if (_dbServer.DatabaseType == DataBaseType.SqlServer) { #region SqlServer读取数据库 if (!string.IsNullOrEmpty(_dbServer.SchemaName)) //有架构名时 { //查询表 _strMainSql = string.Format( @"SELECT B.NAME OWNER,A.NAME TABLE_NAME FROM SYS.OBJECTS A JOIN SYS.SCHEMAS B ON A.SCHEMA_ID=B.SCHEMA_ID WHERE A.TYPE='U' AND A.NAME='{0}' AND B.NAME='{1}'" , sTableName, _dbServer.SchemaName); //查询表的所有列(不要的列在界面上删除) _strSecondSql = string.Format( @"SELECT A.COLID COLUMN_ID,A.NAME COLUMN_NAME,'' 固定值, '' 辅助查询值, (SELECT TOP 1 NAME FROM SYS.TYPES WHERE USER_TYPE_ID = A.XUSERTYPE) DATA_TYPE, A.LENGTH DATA_LENGTH,A.XPREC DATA_PRECISION,A.XSCALE DATA_SCALE,A.ISNULLABLE NULLABLE, C.NAME AS OWNER, B.NAME TABLE_NAME,A.COLSTAT FROM SYSCOLUMNS A JOIN (SELECT * FROM SYS.OBJECTS WHERE TYPE='U' AND NAME='{0}') B ON A.ID=B.OBJECT_ID JOIN SYS.SCHEMAS C ON C.SCHEMA_ID=B.SCHEMA_ID WHERE C.NAME='{1}' ORDER BY A.COLID", sTableName, _dbServer.SchemaName); } else { //查询表 _strMainSql = string.Format( @"SELECT B.NAME OWNER,A.NAME TABLE_NAME FROM SYS.OBJECTS A JOIN SYS.SCHEMAS B ON A.SCHEMA_ID=B.SCHEMA_ID WHERE A.TYPE='U' AND A.NAME='{0}'" , sTableName); //查询表的所有列(不要的列在界面上删除) _strSecondSql = string.Format( @"SELECT A.COLID COLUMN_ID,A.NAME COLUMN_NAME,'' 固定值, '' 辅助查询值, (SELECT TOP 1 NAME FROM SYS.TYPES WHERE USER_TYPE_ID = A.XUSERTYPE) DATA_TYPE, A.LENGTH DATA_LENGTH,A.XPREC DATA_PRECISION,A.XSCALE DATA_SCALE,A.ISNULLABLE NULLABLE, (SELECT TOP 1 NAME FROM SYS.SCHEMAS WHERE SCHEMA_ID=B.SCHEMA_ID) OWNER, B.NAME TABLE_NAME,A.COLSTAT FROM SYSCOLUMNS A JOIN (SELECT * FROM SYS.OBJECTS WHERE TYPE='U' AND NAME='{0}') B ON A.ID=B.OBJECT_ID ORDER BY A.COLID", sTableName); } #endregion } else if (_dbServer.DatabaseType == DataBaseType.Oracle) { #region Oracle读取数据库 if (!string.IsNullOrEmpty(_dbServer.SchemaName)) //当输入架构名称时 { //查询表 _strMainSql = string.Format( @"SELECT A.OWNER,A.TABLE_NAME FROM ALL_TABLES A WHERE UPPER(A.TABLE_NAME)=UPPER('{0}') AND UPPER(A.OWNER)=UPPER('{1}')", sTableName, _dbServer.SchemaName); //查询所有列 _strSecondSql = string.Format( @"SELECT A.COLUMN_ID,A.COLUMN_NAME,'' 固定值,'' 辅助查询值,A.DATA_TYPE,A.DATA_LENGTH, A.DATA_PRECISION,A.DATA_SCALE,A.NULLABLE,A.OWNER,A.TABLE_NAME FROM ALL_TAB_COLS A WHERE UPPER(A.TABLE_NAME)=UPPER('{0}') AND UPPER(A.OWNER)=UPPER('{1}') ORDER BY A.COLUMN_ID", sTableName, _dbServer.SchemaName); } else { //查询表 _strMainSql = string.Format( @"SELECT A.OWNER,A.TABLE_NAME FROM ALL_TABLES A WHERE UPPER(A.TABLE_NAME)=UPPER('{0}')", sTableName); //查询所有列 _strSecondSql = string.Format( @"SELECT A.COLUMN_ID,A.COLUMN_NAME,'' 固定值,'' 辅助查询值,A.DATA_TYPE,A.DATA_LENGTH, A.DATA_PRECISION,A.DATA_SCALE,A.NULLABLE,A.OWNER,A.TABLE_NAME FROM ALL_TAB_COLS A WHERE UPPER(TABLE_NAME)=UPPER('{0}') ORDER BY A.COLUMN_ID", sTableName); } #endregion } else if (_dbServer.DatabaseType == DataBaseType.MySql) { #region Mariadb读取数据库 if (string.IsNullOrEmpty(_dbServer.Database)) { MsgHelper.ShowErr("数据库名不能为空!"); return; } if (string.IsNullOrEmpty(sTableName)) { MsgHelper.ShowErr("表名不能为空!"); cbbTableName.Focus(); return; } //查询表 _strMainSql = string.Format( @"SHOW TABLES WHERE TABLES_IN_" + _dbServer.Database + " = LOWER('{0}')", sTableName); //查询所有列 _strSecondSql = string.Format( @"SHOW COLUMNS FROM {0}", sTableName); #endregion } else if (_dbServer.DatabaseType == DataBaseType.PostgreSql) { #region PostgreSql读取数据库 if (!string.IsNullOrEmpty(_dbServer.SchemaName)) //当输入架构名称时 { //查询表 _strMainSql = string.Format( @"SELECT A.SCHEMANAME AS OWNER,A.TABLENAME AS TABLE_NAME FROM PG_TABLES A WHERE 1=1 AND UPPER(A.TABLENAME)=UPPER('{0}') AND UPPER(A.SCHEMANAME)=UPPER('{1}')", sTableName, _dbServer.SchemaName); //查询所有列 _strSecondSql = string.Format( @" SELECT A.ORDINAL_POSITION as COLUMN_ID,a.COLUMN_NAME,'' 固定值,'' 辅助查询值,a.DATA_TYPE, A.CHARACTER_MAXIMUM_LENGTH as DATA_LENGTH,A.NUMERIC_PRECISION as DATA_PRECISION, A.NUMERIC_SCALE as DATA_SCALE,A.IS_NULLABLE as NULLABLE,A.TABLE_SCHEMA as owner,A.TABLE_NAME as TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS A LEFT JOIN (SELECT C.ATTNAME AS COLUMN_NAME FROM PG_CONSTRAINT A JOIN PG_CLASS B ON A.CONRELID = B.OID JOIN PG_ATTRIBUTE C ON C.ATTRELID = B.OID AND C.ATTNUM = A.CONKEY[1] JOIN PG_TYPE D ON D.OID = C.ATTTYPID WHERE UPPER(B.RELNAME) = UPPER('{0}') AND A.CONTYPE = 'p') PK ON A.COLUMN_NAME = PK.COLUMN_NAME WHERE UPPER(A.TABLE_SCHEMA)=UPPER('{1}') AND UPPER(A.TABLE_NAME)=UPPER('{0}') ORDER BY A.ORDINAL_POSITION", sTableName, _dbServer.SchemaName); } else { //查询表 _strMainSql = string.Format(@"SELECT A.SCHEMANAME AS OWNER,A.TABLENAME AS TABLE_NAME FROM PG_TABLES A WHERE 1=1 AND UPPER(A.TABLENAME)=UPPER('{0}')", sTableName); //查询所有列 _strSecondSql = string.Format( @" SELECT A.ORDINAL_POSITION AS COLUMN_ID,A.COLUMN_NAME,'' 固定值,'' 辅助查询值,A.DATA_TYPE, A.CHARACTER_MAXIMUM_LENGTH AS DATA_LENGTH,A.NUMERIC_PRECISION AS DATA_PRECISION, A.NUMERIC_SCALE AS DATA_SCALE,A.IS_NULLABLE AS NULLABLE,A.TABLE_SCHEMA AS OWNER,A.TABLE_NAME AS TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS A LEFT JOIN (SELECT C.ATTNAME AS COLUMN_NAME FROM PG_CONSTRAINT A JOIN PG_CLASS B ON A.CONRELID = B.OID JOIN PG_ATTRIBUTE C ON C.ATTRELID = B.OID AND C.ATTNUM = A.CONKEY[1] JOIN PG_TYPE D ON D.OID = C.ATTTYPID WHERE UPPER(B.RELNAME) = UPPER('{0}') AND A.CONTYPE = 'P') PK ON A.COLUMN_NAME = PK.COLUMN_NAME WHERE UPPER(A.TABLE_SCHEMA)=UPPER('PUBLIC') AND UPPER(A.TABLE_NAME)=UPPER('{0}') ORDER BY A.ORDINAL_POSITION", sTableName); } #endregion } else if (_dbServer.DatabaseType == DataBaseType.SQLite) { #region SQLite读取数据库 //查询表:type,name,TBL_NAME,rootpage,sql _strMainSql = string.Format( @"SELECT TBL_NAME AS TABLE_NAME FROM SQLITE_MASTER WHERE UPPER(TYPE)= 'TABLE' AND UPPER(NAME)= ('{0}')", sTableName); //查询所有列:cid,name,type,notnull,dflt_value,pk _strSecondSql = string.Format( @"PRAGMA TABLE_INFO('{0}')", sTableName); #endregion } else { throw new Exception("暂不支持该数据库类型!"); } #endregion _dataAccess = new CustomDataAccess(_dbServer.DatabaseType, _dbServer); _dicQueryCondition.Clear(); #region 查询或构造表 if (_dbServer.DatabaseType == DataBaseType.MySql || _dbServer.DatabaseType == DataBaseType.SQLite) { DataTable dtMainTemp = _dataAccess.DataAccess.QueryHadParamSqlData(_strMainSql, _dicQueryCondition); DataTable dtSecTemp = _dataAccess.DataAccess.QueryHadParamSqlData(_strSecondSql, _dicQueryCondition); if (dtMainTemp.Rows.Count == 0) { MsgHelper.ShowErr("表不存在!"); return; } //生成表和列 GenerateTableColumn(out dtMain, out dtSec); dtMain.Rows[0]["TABLE_NAME"] = dtMainTemp.Rows[0][0]; int i = 1; foreach (DataRow row in dtSecTemp.Rows) { DataRow drNew = dtSec.NewRow(); if (_dbServer.DatabaseType == DataBaseType.MySql) { drNew["COLUMN_ID"] = i; drNew["COLUMN_NAME"] = row["Field"]; drNew["DATA_TYPE"] = row["Type"]; drNew["NULLABLE"] = row["Null"]; } else { drNew["COLUMN_ID"] = row["cid"]; drNew["COLUMN_NAME"] = row["name"]; drNew["DATA_TYPE"] = row["type"]; drNew["NULLABLE"] = row["notnull"]; } dtSec.Rows.Add(drNew); i++; } } else { dtMain = _dataAccess.DataAccess.QueryHadParamSqlData(_strMainSql, _dicQueryCondition); dtSec = _dataAccess.DataAccess.QueryHadParamSqlData(_strSecondSql, _dicQueryCondition); } #endregion dtMain.TableName = _strTableName; bsTable.DataSource = dtMain; dtSec.TableName = _strColName; bsCos.DataSource = dtSec; #region SqlServer自增长列处理 if (_dbServer.DatabaseType == DataBaseType.SqlServer) { if (dtSec.Select("COLSTAT>0").Length > 0) { ckbMainKeyInsert.Enabled = true; } else { ckbMainKeyInsert.Enabled = false; } } else { ckbMainKeyInsert.Visible = false; //不可见 } #endregion //设置数据源 GlobalValue.Instance.SetPublicDataSource(new DataTable[] { dtMain, dtSec }); dgvTableList.DataSource = bsCos; //dgvColList.DataSource = null; //设置网格样式 bsCos.AllowNew = false; foreach (DataGridViewColumn dgvc in dgvTableList.Columns) { dgvc.ReadOnly = true; if (dgvc.Name == "固定值" || dgvc.Name == "辅助查询值") { dgvc.ReadOnly = false; } } #endregion //导入成功后处理 tsbAutoSQL.Enabled = true; tsbExport.Enabled = true; tabControl1.SelectedTab = tpImport; //导入成功提示 lblInfo.Text = _strImportSuccess; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void tsbImport_Click(object sender, EventArgs e) { _dbServer = uC_DbConnection1.GetDbServerInfo(); if (_dbServer == null) { return; } #region 查询数据库中的源表 if (_dbServer.DatabaseType == DataBaseType.Oracle) { #region Oracle增删改查SQL生成 if (!string.IsNullOrEmpty(_dbServer.SchemaName)) { #region 架构不为空 //查询表 _strMainSql = string.Format( @"SELECT A.OWNER, A.TABLE_NAME, B.COMMENTS FROM ALL_TABLES A JOIN ALL_TAB_COMMENTS B ON A.TABLE_NAME = B.TABLE_NAME AND A.OWNER=B.OWNER WHERE UPPER(A.TABLE_NAME) = UPPER('{0}') and UPPER(A.OWNER) = UPPER('{1}')", cbbTableName.Text.Trim(), _dbServer.SchemaName); //查询所有列 _strSecondSql = string.Format( @"selECT A.COLUMN_ID , A.COLUMN_NAME, '' 固定值, B.COMMENTS, A.DATA_TYPE, A.DATA_LENGTH, A.DATA_PRECISION, A.DATA_SCALE, A.NULLABLE, A.OWNER, A.TABLE_NAME, (select decode(BB.COLUMN_NAME,null,0,1) from all_constraints AA join all_cons_columns BB on AA.CONSTRAINT_NAME=BB.CONSTRAINT_NAME where UPPER(AA.TABLE_NAME) = UPPER(A.TABLE_NAME) AND UPPER(BB.COLUMN_NAME) = UPPER(A.COLUMN_NAME) AND AA.OWNER=BB.OWNER AND AA.OWNER=A.OWNER and AA.CONSTRAINT_TYPE='P' and rownum=1) IS_PK FROM ALL_TAB_COLS A JOIN ALL_COL_COMMENTS B ON A.TABLE_NAME=B.TABLE_NAME AND A.COLUMN_NAME=B.COLUMN_NAME AND A.OWNER=B.OWNER WHERE UPPER(A.TABLE_NAME) = UPPER('{0}') and UPPER(A.OWNER) = UPPER('{1}') ORDER BY A.COLUMN_ID", cbbTableName.Text.Trim(), _dbServer.SchemaName); #endregion } else { #region 架构为空 //查询表 _strMainSql = string.Format( @"SELECT A.OWNER, A.TABLE_NAME, B.COMMENTS FROM ALL_TABLES A JOIN ALL_TAB_COMMENTS B ON A.TABLE_NAME = B.TABLE_NAME AND A.OWNER=B.OWNER WHERE UPPER(A.TABLE_NAME) = UPPER('{0}')", cbbTableName.Text.Trim()); //查询所有列 _strSecondSql = string.Format( @"selECT A.COLUMN_ID , A.COLUMN_NAME, '' 固定值, B.COMMENTS, A.DATA_TYPE, A.DATA_LENGTH, A.DATA_PRECISION, A.DATA_SCALE, A.NULLABLE, A.OWNER, A.TABLE_NAME, (select decode(BB.COLUMN_NAME,null,0,1) from all_constraints AA join all_cons_columns BB on AA.CONSTRAINT_NAME=BB.CONSTRAINT_NAME where UPPER(AA.TABLE_NAME) = UPPER(A.TABLE_NAME) and UPPER(BB.COLUMN_NAME) = UPPER(A.COLUMN_NAME) and AA.OWNER=BB.OWNER AND AA.OWNER=A.OWNER and AA.CONSTRAINT_TYPE='P' and rownum=1) IS_PK FROM ALL_TAB_COLS A JOIN ALL_COL_COMMENTS B ON A.TABLE_NAME=B.TABLE_NAME AND A.COLUMN_NAME=B.COLUMN_NAME WHERE UPPER(A.TABLE_NAME) = UPPER('{0}') ORDER BY A.COLUMN_ID", cbbTableName.Text.Trim()); #endregion } #endregion } else if (_dbServer.DatabaseType == DataBaseType.SqlServer) { #region SQL Server增删改查SQL生成 if (!string.IsNullOrEmpty(_dbServer.SchemaName)) { #region 架构不为空时 //查询表 _strMainSql = string.Format( @"SELECT b.name owner , a.name table_name, c.value COMMENTS FROM sys.objects a JOIN sys.schemas b ON a.schema_id = b.schema_id JOIN sys.extended_properties C ON c.major_id=a.object_id AND C.minor_id=0 WHERE a.type = 'U' AND a.name = '{0}' and b.name= '{1}'", cbbTableName.Text.Trim(), _dbServer.SchemaName); //查询表的所有列(不要的列在界面上删除) _strSecondSql = string.Format( @"SELECT a.colid COLUMN_ID, a.NAME COLUMN_NAME , '' 固定值 , c.value COMMENTS, ( SELECT TOP 1 NAME FROM sys.types WHERE user_type_id = a.xusertype ) DATA_TYPE , a.length DATA_LENGTH , a.xprec DATA_PRECISION , a.xscale DATA_SCALE , a.isnullable , D.Name as OWNER , b.NAME TABLE_NAME , a.COLSTAT FROM syscolumns a JOIN ( SELECT * FROM sys.objects WHERE type = 'U' AND name = '{0}' ) b ON a.id = b.object_id JOIN sys.extended_properties C ON c.major_id = b.object_id AND C.minor_id = a.colid AND c.name = 'MS_Description' JOIN sys.schemas D ON D.schema_id = b.SCHEMA_ID where D.name='{1}'" , cbbTableName.Text.Trim(), _dbServer.SchemaName); #endregion } else { #region 架构为空时 //查询表 _strMainSql = string.Format( @"SELECT b.name owner , a.name table_name, c.value COMMENTS FROM sys.objects a JOIN sys.schemas b ON a.schema_id = b.schema_id JOIN sys.extended_properties C ON c.major_id=a.object_id AND C.minor_id=0 WHERE a.type = 'U' AND a.name = '{0}'", cbbTableName.Text.Trim()); //查询表的所有列(不要的列在界面上删除) _strSecondSql = string.Format( @"SELECT a.colid COLUMN_ID, a.NAME COLUMN_NAME , '' 固定值 , c.value COMMENTS, ( SELECT TOP 1 NAME FROM sys.types WHERE user_type_id = a.xusertype ) DATA_TYPE , a.length DATA_LENGTH , a.xprec DATA_PRECISION , a.xscale DATA_SCALE , a.isnullable , ( SELECT TOP 1 name FROM sys.schemas WHERE schema_id = b.SCHEMA_ID ) OWNER , b.NAME TABLE_NAME , a.COLSTAT FROM syscolumns a JOIN ( SELECT * FROM sys.objects WHERE type = 'U' AND name = '{0}' ) b ON a.id = b.object_id JOIN sys.extended_properties C ON c.major_id = b.object_id AND C.minor_id = a.colid AND c.name = 'MS_Description'", cbbTableName.Text.Trim()); #endregion } #endregion } else { throw new Exception("暂不支持该数据库类型!"); } #endregion dsExcel = new DataSet(); #region 生成增删改查SQL _dataAccess = new CustomDataAccess(_dbServer.DatabaseType, _dbServer); DataTable dtMain = _dataAccess.DataAccess.QueryHadParamSqlData(_strMainSql, _dicQueryCondition); dtMain.TableName = _strTableName; bsTable.DataSource = dtMain; DataTable dtSec = _dataAccess.DataAccess.QueryHadParamSqlData(_strSecondSql, _dicQueryCondition); //增加条件列 dtSec.Columns.Add("条件", typeof(bool)); //增加选择列 DataColumn dcSelected = new DataColumn("选择", typeof(bool)); dcSelected.DefaultValue = Boolean.TrueString; dtSec.Columns.Add(dcSelected); dtSec.TableName = _strColName; bsCos.DataSource = dtSec; //设置数据源 GlobalValue.Instance.SetPublicDataSource(new DataTable[] { dtMain, dtSec }); dgvTableList.DataSource = bsTable; dgvColList.DataSource = bsCos; //设置网格样式 bsCos.AllowNew = false; foreach (DataGridViewColumn dgvc in dgvColList.Columns) { dgvc.ReadOnly = true; if (dgvc.Name == "固定值" || dgvc.Name == "条件" || dgvc.Name == "选择") { dgvc.ReadOnly = false; } } dgvColList.Columns["条件"].DisplayIndex = 0; dgvColList.Columns["条件"].Width = 60; dgvColList.Columns["选择"].DisplayIndex = 0; dgvColList.Columns["选择"].Width = 60; dgvColList.Columns["COLUMN_ID"].Width = 40; dgvColList.Columns["COMMENTS"].Width = 100; #endregion //导入成功后处理 tsbAutoSQL.Enabled = true; tabControl1.SelectedTab = tpImport; //导入成功提示 lblInfo.Text = _strImportSuccess; }
private void LoadTreeView(DbServerInfo server, AutoEntityBiz entiyBiz) { string collectionName = DbSchemaString.Databases; string[] restrictionValues = null; switch (server.DatabaseType) { case DataBaseType.SqlServer: collectionName = DbSchemaString.Databases; break; case DataBaseType.Oracle: collectionName = DbSchemaString.Users; break; case DataBaseType.MySql: collectionName = DbSchemaString.Databases; break; case DataBaseType.SQLite: collectionName = DbSchemaString.Tables; //对SQLite,只有唯一的Main数据库,没有数据库清单表 break; case DataBaseType.PostgreSql: collectionName = DbSchemaString.Databases; break; default: break; } try { DataTable schema = entiyBiz.GetSchema(collectionName, null); tvDataBaseInfo.Nodes.Clear(); TreeNode node = new TreeNode(); node.ToolTipText = "请您点选后,在按鼠标右键"; node.Text = server.ServerName; for (int i = 0; i < schema.Rows.Count; i++) { TreeNode node2 = new TreeNode(); string str2 = schema.Rows[i][0].ToString(); if (server.DatabaseType == DataBaseType.MySql) { str2 = schema.Rows[i][1].ToString(); } server.Database = str2; if (server.DatabaseType == DataBaseType.Oracle) { restrictionValues = new string[] { str2 }; } else if (server.DatabaseType == DataBaseType.MySql) { string[] strArray2 = new string[2]; strArray2[1] = str2; restrictionValues = strArray2; } DataTable table2 = entiyBiz.GetSchema("Tables", restrictionValues); DataView dv = table2.DefaultView; table2.DefaultView.Sort = "TABLE_NAME ASC"; for (int j = 0; j < dv.Count; j++) { string str3 = ""; if (server.DatabaseType == DataBaseType.Oracle) { str3 = dv[j][1].ToString(); } else { str3 = dv[j][2].ToString(); } TreeNode node3 = new TreeNode(); node3.ToolTipText = "请您点选后,在按鼠标右键"; node3.Text = str3; node2.Nodes.Add(node3); } node2.ToolTipText = "请您点选后,在按鼠标右键"; node2.Text = str2; node.Nodes.Add(node2); //对于SQLite,终止循环 if (server.DatabaseType == DataBaseType.SQLite) { break; } } tvDataBaseInfo.Nodes.Add(node); //展开默认的数据库表树 string strDefuatExpandDBName = server.Database; foreach (TreeNode tnode in tvDataBaseInfo.Nodes) { ExpandDefaultDB(tnode, strDefuatExpandDBName); } } catch (Exception exception) { MsgHelper.ShowErr(exception.Message); } }
public DbServerInfo GetDbServerInfo() { var DbServer = new DbServerInfo() { Database = txbDbName.Text.Trim(), DatabaseType = (DataBaseType)int.Parse(cbbDatabaseType.SelectedValue.ToString()), LoginMode = (cbbLoginType.SelectedValue == null || cbbLoginType.SelectedValue.ToString() == "1") ? LoginModeEnum.SQL : LoginModeEnum.Windows, Password = txbPassword.Text.Trim(), PortNo = txbPortNO.Text.Trim(), SchemaName = txbSchemaName.Text.Trim(), ServerName = txbServerIP.Text.Trim(), UserName = txbUserName.Text.Trim(), }; int iDbType = int.Parse(cbbDatabaseType.SelectedValue.ToString()); DataBaseType selectDBType = (DataBaseType)iDbType; if (IsDbNameNotNull && string.IsNullOrEmpty(DbServer.Database)) { MsgHelper.ShowErr("数据库名称不能为空!"); return(null); } switch (selectDBType) { case DataBaseType.SqlServer: if (string.IsNullOrEmpty(DbServer.ServerName)) { MsgHelper.ShowErr("服务器地址不能为空!"); return(null); } if (DbServer.LoginMode == LoginModeEnum.SQL) { if (string.IsNullOrEmpty(DbServer.UserName) || string.IsNullOrEmpty(DbServer.Password)) { MsgHelper.ShowErr("用户名和密码都不能为空!"); return(null); } } //显示登录类型 lblLoginType.Visible = true; cbbLoginType.Visible = true; break; case DataBaseType.Oracle: if (string.IsNullOrEmpty(DbServer.ServerName)) { MsgHelper.ShowErr("TNS名称不能为空!"); return(null); } if (string.IsNullOrEmpty(DbServer.UserName) || string.IsNullOrEmpty(DbServer.Password)) { MsgHelper.ShowErr("用户名和密码都不能为空!"); return(null); } break; case DataBaseType.MySql: if (string.IsNullOrEmpty(DbServer.ServerName)) { MsgHelper.ShowErr("服务器地址不能为空!"); return(null); } if (string.IsNullOrEmpty(DbServer.UserName) || string.IsNullOrEmpty(DbServer.Password)) { MsgHelper.ShowErr("用户名和密码都不能为空!"); return(null); } break; case DataBaseType.SQLite: if (string.IsNullOrEmpty(DbServer.ServerName)) { MsgHelper.ShowErr("数据库文件路径不能为空!"); return(null); } break; case DataBaseType.PostgreSql: if (string.IsNullOrEmpty(DbServer.ServerName)) { MsgHelper.ShowErr("服务器地址不能为空!"); return(null); } if (string.IsNullOrEmpty(DbServer.UserName) || string.IsNullOrEmpty(DbServer.Password)) { MsgHelper.ShowErr("用户名和密码都不能为空!"); return(null); } break; default: throw new Exception("暂不支持该数据库类型!"); //break; } //得到数据库访问对象 CustomDac = new CustomDataAccess(selectDBType, DbServer); UserTableList = CustomDac.DataAccess.GetUserTableList();//所有用户表 //返回 return(DbServer); }
public DataTable GetMemorySTable(string dataBase, string tblName, DbServerInfo server) { DataTable schema = null; DataBaseType databaseType = server.DatabaseType; string[] strArray; if ((server != null) && server.DatabaseType == DataBaseType.Oracle) { schema = this.GetSchema("Columns", new string[] { dataBase, tblName }); } else if ((server != null) && server.DatabaseType == DataBaseType.MySql) { strArray = new string[3]; strArray[1] = dataBase; strArray[2] = tblName; schema = this.GetSchema("Columns", strArray); } else { strArray = new string[3]; strArray[0] = dataBase; strArray[2] = tblName; schema = this.GetSchema("Columns", strArray); } DataTable table2 = new DataTable(); DataColumn column = new DataColumn("fieldId", typeof(int)); DataColumn column2 = new DataColumn("dbName", typeof(string)); DataColumn column3 = new DataColumn("tableName", typeof(string)); DataColumn column4 = new DataColumn("fieldName", typeof(string)); DataColumn column5 = new DataColumn("fieldType", typeof(string)); DataColumn column6 = new DataColumn("typeSize", typeof(string)); DataColumn column7 = new DataColumn("numericPrecision", typeof(string)); table2.Columns.AddRange(new DataColumn[] { column, column2, column3, column4, column5, column6, column7 }); for (int i = 0; i < schema.Rows.Count; i++) { DataRow row = table2.NewRow(); row["fieldId"] = i + 1; row["dbName"] = dataBase; row["tableName"] = tblName; if ((server != null) && (server.DatabaseType == DataBaseType.Oracle)) { row["fieldName"] = schema.Rows[i][2].ToString(); row["fieldType"] = schema.Rows[i][4].ToString(); row["typeSize"] = schema.Rows[i][5].ToString(); row["numericPrecision"] = schema.Rows[i][6].ToString(); } else { row["fieldName"] = schema.Rows[i][3].ToString(); row["fieldType"] = schema.Rows[i][7].ToString(); if ((server != null) && (server.DatabaseType == DataBaseType.MySql)) { row["typeSize"] = schema.Rows[i][8].ToString(); row["numericPrecision"] = schema.Rows[i][9].ToString(); } else { row["typeSize"] = schema.Rows[i][9].ToString(); row["numericPrecision"] = schema.Rows[i][10].ToString(); } } table2.Rows.Add(row); } return(table2); }