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);
        }
Exemple #2
0
    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));
    }
Exemple #3
0
    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));
    }
Exemple #4
0
    // 根据地址名称,取得下标
    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);
    }
Exemple #6
0
        public ExportEntityViewModel(ITableInfoService tableInfoService, IColumnInfoService columnInfoService)
        {
            _tableInfoService  = tableInfoService;
            _columnInfoService = columnInfoService;

            _dbServerHistoryItems = DbServerInfoFile.GetDbServerInfoHistoryItems();

            _currentDbServerInfoItem = new DbServerInfo();
        }
Exemple #7
0
    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);
    }
Exemple #8
0
        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);
    }
Exemple #10
0
    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);
            }
        }
Exemple #12
0
    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);
        }
    }
Exemple #13
0
    // 传入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());
    }
Exemple #16
0
 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);
 }
Exemple #17
0
        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();
        }
Exemple #18
0
    // 根据地址名称,取得下标
    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);
    }
Exemple #19
0
        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);
        }
Exemple #21
0
    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));
    }
Exemple #22
0
    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));
    }
Exemple #23
0
 public AutoEntityBiz(DataBaseType dbt, DbServerInfo server)
 {
     CustomDataAccess = new CustomDataAccess(dbt, server);
 }
Exemple #24
0
        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;
        }
Exemple #27
0
        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);
            }
        }
Exemple #28
0
        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);
        }
Exemple #29
0
        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);
        }