コード例 #1
0
        public int DbLink_Add(DbLinkInfo info)
        {
            int rst = 0;

            try
            {
                OleDbParameter[] param = new OleDbParameter[7];
                param[0]       = new OleDbParameter("@DbName", OleDbType.VarWChar, 50);
                param[0].Value = info.DbName;
                param[1]       = new OleDbParameter("@UserName", OleDbType.VarWChar, 50);
                param[1].Value = info.UserName;
                param[2]       = new OleDbParameter("@PassWord", OleDbType.VarWChar, 50);
                param[2].Value = info.PassWord;
                param[3]       = new OleDbParameter("@DbType", OleDbType.Integer);
                param[3].Value = info.DbType;
                param[4]       = new OleDbParameter("@DataSource", OleDbType.VarWChar, 255);
                param[4].Value = info.DataSource;
                param[5]       = new OleDbParameter("@Port", OleDbType.VarWChar, 10);
                param[5].Value = info.Port;
                param[6]       = new OleDbParameter("@DbAbbreviation", OleDbType.VarWChar, 50);
                param[6].Value = info.DbAbbreviation;

                string sql = "insert into Cm_DbLink (DbName,UserName,[PassWord],DbType,DataSource,CreateTime,Port,DbAbbreviation) values (@DbName,@UserName,@PassWord,@DbType,@DataSource,now(),@Port,@DbAbbreviation)";
                rst = DbHelper.ExecuteNonQuery(constring, CommandType.Text, sql, param);
            }
            catch (Exception ex)
            {
                rst = -1;
            }

            return(rst);
        }
コード例 #2
0
        private DataBaseInfo GetDbInfo(int DbLinkId)
        {
            IDbLink    dal    = new DbLink();
            DbLinkInfo dlinfo = dal.DbLinkGetInfo(DbLinkId);

            IDataBase      dbDal         = new CurrencyDal.CodeMaker.DataBase();
            string         rstmsg        = "";
            string         tableName     = "";
            List <string>  tableNameList = new List <string>();
            DbDataTypeEnum dtype         = DbDataType.GetDbDataType(dinfo.NameType);

            if (dtype == DbDataTypeEnum.表)
            {
                tableName = dinfo.Name;

                //oracle数据库表名大写
                if (dlinfo.DbType == 2)
                {
                    tableName = tableName.ToUpper();
                }

                tableNameList.Add(tableName);
            }
            DataBaseInfo dbinfo = dbDal.DataBaseGetInfo(dlinfo, tableNameList, out rstmsg);

            return(dbinfo);
        }
コード例 #3
0
        public DbLinkInfo DbLinkGetInfo(int ID)
        {
            DbLinkInfo info = new DbLinkInfo();
            DataTable  dt   = new DataTable();

            OleDbParameter[] param = new OleDbParameter[5];
            param[0]       = new OleDbParameter("@ID", OleDbType.VarWChar, 20);
            param[0].Value = ID;

            string sql = "select * from Cm_DbLink where ID=@ID";

            dt = DbHelper.ExecuteTable(constring, CommandType.Text, sql, param);
            if (dt.Rows.Count > 0)
            {
                info.ID             = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
                info.DbName         = dt.Rows[0]["DbName"].ToString();
                info.UserName       = dt.Rows[0]["UserName"].ToString();
                info.PassWord       = dt.Rows[0]["PassWord"].ToString();
                info.DataSource     = dt.Rows[0]["DataSource"].ToString();
                info.DbType         = int.Parse(dt.Rows[0]["DbType"].ToString());
                info.CreateTime     = Convert.ToDateTime(dt.Rows[0]["CreateTime"].ToString());
                info.Port           = dt.Rows[0]["Port"].ToString();
                info.DbAbbreviation = dt.Rows[0]["DbAbbreviation"].ToString();
            }
            return(info);
        }
コード例 #4
0
        private void btn_Save_Click(object sender, EventArgs e)
        {
            DbLinkInfo info = GetDbLinkInfo();

            string DbTime = "";
            string rstmsg = "";

            if (GetDbLink(out DbTime, out rstmsg) == -1)
            {
                MessageBox.Show("保存失败。" + rstmsg);
                return;
            }

            int rst = 0;

            if (info.ID == 0)
            {
                rst = dal.DbLink_Add(info);
            }
            else if (info.ID > 0)
            {
                rst = dal.DbLink_Edit(info);
            }

            if (rst > 0)
            {
                Initdgv_DbLink();
                MessageBox.Show("保存成功。");
            }
            else
            {
                MessageBox.Show("保存失败。");
            }
        }
コード例 #5
0
        private void comboBoxDB_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string  rstmsg  = "";
                IDbLink dal     = new DbLink();
                int     id      = 0;
                var     lisitem = comboBoxDB.SelectedItem as ListItem;
                id = string.IsNullOrEmpty(lisitem.ID) ? 0 : int.Parse(lisitem.ID);
                //id = comboBoxDB.SelectedValue.ToString() == "" ? 0 : int.Parse(comboBoxDB.SelectedValue.ToString());
                DbLinkInfo dlinfo = dal.DbLinkGetInfo(id);

                IDataBase    dbDal  = new CurrencyDal.CodeMaker.DataBase();
                DataBaseInfo dbinfo = dbDal.GetTableInfo(dlinfo, out rstmsg);
                comboBoxTable.DataSource = null;
                List <ListItem> list  = new List <ListItem>();
                TableInfo       model = new TableInfo();
                list.Add(new ListItem("请选择表", "请选择表"));
                foreach (TableInfo item in dbinfo.Tables)
                {
                    TableInfo modeltable = new TableInfo();
                    list.Add(new ListItem(item.xType, item.Name));
                }
                comboBoxTable.DataSource = list;
            }
            catch (Exception ex)
            {
                string msgerror = ex.Message;
            }
        }
コード例 #6
0
        public IList <DbLinkInfo> DbLinkGetList()
        {
            IList <DbLinkInfo> ilist = new List <DbLinkInfo>();
            DataTable          dt    = new DataTable();

            string sql = "select *,iif(DbType=1, 'SQLServer', iif(DbType=2, 'Oracle', iif(DbType=3, 'MySql', iif(DbType=4, 'Access', iif(DbType=5, 'SqLite', iif(DbType=6, 'PDM', iif(DbType=7, 'MongoDB', iif(DbType=8, 'Redis', '')))))))) as DbTypeName from Cm_DbLink";

            dt = DbHelper.ExecuteTable(constring, CommandType.Text, sql, null);

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DbLinkInfo info = new DbLinkInfo();
                info.ID             = Convert.ToInt32(dt.Rows[i]["ID"].ToString());
                info.DbName         = dt.Rows[i]["DbName"].ToString();
                info.UserName       = dt.Rows[i]["UserName"].ToString();
                info.PassWord       = dt.Rows[i]["PassWord"].ToString();
                info.DataSource     = dt.Rows[i]["DataSource"].ToString();
                info.DbType         = int.Parse(dt.Rows[i]["DbType"].ToString());
                info.CreateTime     = Convert.ToDateTime(dt.Rows[i]["CreateTime"].ToString());
                info.Port           = dt.Rows[i]["Port"].ToString();
                info.DbAbbreviation = dt.Rows[i]["DbAbbreviation"].ToString();
                info.DbTypeName     = dt.Rows[i]["DbTypeName"].ToString();
                ilist.Add(info);
            }
            return(ilist);
        }
コード例 #7
0
        public int DbLink_Edit(DbLinkInfo info)
        {
            int rst = 0;

            try
            {
                OleDbParameter[] param = new OleDbParameter[8];
                param[0]       = new OleDbParameter("@DbName", OleDbType.VarWChar, 50);
                param[0].Value = info.DbName;
                param[1]       = new OleDbParameter("@UserName", OleDbType.VarWChar, 50);
                param[1].Value = info.UserName;
                param[2]       = new OleDbParameter("@PassWord", OleDbType.VarWChar, 50);
                param[2].Value = info.PassWord;
                param[3]       = new OleDbParameter("@DbType", OleDbType.Integer);
                param[3].Value = info.DbType;
                param[4]       = new OleDbParameter("@DataSource", OleDbType.VarWChar, 255);
                param[4].Value = info.DataSource;
                param[5]       = new OleDbParameter("@Port", OleDbType.VarWChar, 10);
                param[5].Value = info.Port;
                param[6]       = new OleDbParameter("@DbAbbreviation", OleDbType.VarWChar, 50);
                param[6].Value = info.DbAbbreviation;
                param[7]       = new OleDbParameter("@ID", OleDbType.VarWChar, 50);
                param[7].Value = info.ID;

                string sql = "update Cm_DbLink set  DbName=@DbName,UserName=@UserName,[PassWord]=@PassWord,DbType=@DbType,DataSource=@DataSource,CreateTime=now(),Port=@Port,DbAbbreviation=@DbAbbreviation where ID=@ID";
                rst = DbHelper.ExecuteNonQuery(constring, CommandType.Text, sql, param);
            }
            catch
            {
                rst = -1;
            }

            return(rst);
        }
コード例 #8
0
        private DataBaseInfo GetDbInfo()
        {
            IDbLink    dal    = new DbLink();
            DbLinkInfo dlinfo = dal.DbLinkGetInfo(dinfo.DbLinkID);

            IDataBase     dbDal         = new CurrencyDal.CodeMaker.DataBase();
            string        rstmsg        = "";
            List <string> tableNameList = new List <string>();

            tableNameList.Add(dinfo.Name);
            DataBaseInfo dbinfo = dbDal.DataBaseGetInfo(dlinfo, tableNameList, out rstmsg);

            return(dbinfo);
        }
コード例 #9
0
        private DataBaseInfo GetDbInfo(int ID)
        {
            IDbLink    dal    = new DbLink();
            DbLinkInfo dlinfo = dal.DbLinkGetInfo(ID);

            IDataBase      dbDal         = new  CurrencyDal.CodeMaker.DataBase();
            string         rstmsg        = "";
            List <string>  tableNameList = new List <string>();
            string         tableName     = "";
            DbDataTypeEnum dtype         = DbDataType.GetDbDataType(dinfo.NameType);

            if (dtype == DbDataTypeEnum.表)
            {
                tableName = dinfo.Name;
                tableNameList.Add(tableName);
            }
            DataBaseInfo dbinfo = dbDal.DataBaseGetInfo(dlinfo, tableNameList, out rstmsg);

            //DataBaseInfo2 info = new DataBaseInfo2();

            //try
            //{
            //switch (dlinfo.DbType)
            //{

            //    case 1:
            //        System.Data.Common.DbConnection connSql = new System.Data.SqlClient.SqlConnection();
            //        connSql.ConnectionString = "Data Source=" + dlinfo.DataSource + ";Initial Catalog=" + dlinfo.DbName + ";User ID=" + dlinfo.UserName + ";Password="******"Data Source=" + dlinfo.DbName + ";User ID=" + dlinfo.UserName + ";Password="******"";
            //        info.GetOracleDb(connOracle);
            //        break;
            //    case 3:
            //        string ConnString = dlinfo.DataSource;
            //        info.LoadFromAccess2000(ConnString);
            //        break;

            //}
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show("操作失败。" + ex.Message);
            //}

            return(dbinfo);
        }
コード例 #10
0
        private void ExportInsert()
        {
            string sqlmsg = "";
            string rstmsg = "";
            string sql    = textEditorControl.ActiveTextAreaControl.TextArea.SelectionManager.SelectedText.Trim();

            if (sql == "")
            {
                sql = textEditorControl.Text.Trim();
            }
            if (sql == "")
            {
                return;
            }
            sql = GetSqlZC(sql);
            sql = sql.Replace("\r\n", " ");

            ListItem item = DBToolStripComboBox.SelectedItem as ListItem;

            int DbLinkID = int.Parse(item.ID.ToString());

            if (DbLinkID == 0)
            {
                MessageBox.Show("请选择数据库");
            }
            IDbLink    ldal   = new DbLink();
            DbLinkInfo dlinfo = ldal.DbLinkGetInfo(DbLinkID);
            DataSet    ds     = dal.Run(dlinfo, sql, out sqlmsg, out rstmsg);

            if (ds != null && ds.Tables != null && ds.Tables[0].Rows.Count > 0)
            {
                DataBaseTypeEnum dbtype       = DataBaseTypeEnum.SQLServer;
                string           TargetDbType = toolStripComboBox_TargetDbType.Text;

                if (TargetDbType == "SQLServer")
                {
                    dbtype = DataBaseTypeEnum.SQLServer;
                }
                else if (TargetDbType == "Oracle")
                {
                    dbtype = DataBaseTypeEnum.Oracle;
                }
                else if (TargetDbType == "MySql")
                {
                    dbtype = DataBaseTypeEnum.MySql;
                }
                string strSql = GetInserSql(ds.Tables[0], dbtype, out rstmsg);
                Clipboard.SetDataObject(strSql);
            }
        }
コード例 #11
0
        /// <summary>
        /// 执行事务
        /// </summary>
        /// <param name="sqllist">sql语句列表</param>
        /// <returns></returns>
        public int ExeSqlTran(DbLinkInfo info, List <string> sqllist, out string rstmsg)
        {
            int rst = 0;

            rstmsg = "";
            try
            {
                System.Data.Common.DbConnection conn = DBConfig.GetDbConnection(info);
                rst    = DbHelper.ExecuteNonQueryCurrencyTransactions(conn, CommandType.Text, sqllist, null);
                rstmsg = "共" + sqllist.Count + "行数据,成功修改" + rst + "行数据,有" + (sqllist.Count - rst).ToString() + "行未修改。";
            }
            catch (Exception ex)
            {
                rstmsg = ex.Message;
            }
            return(rst);
        }
コード例 #12
0
        /// <summary>
        /// 导入文件
        /// </summary>
        /// <param name="rstmsg"></param>
        /// <returns></returns>
        private int ImportData(out string rstmsg)
        {
            int rst = 0;

            rstmsg = "";
            //获取文件数据
            //rst = GetDataSet(out rstmsg);
            //if (rst != 1)
            //{
            //    MessageBox.Show(rstmsg);
            //    return;
            //}
            btnRefresh_Click(null, null);
            //导入文件数据
            if (ds == null)
            {
                MessageBox.Show("导入数据为空。");
            }
            if (ds.Tables.Count < 1 || ds.Tables[0].Rows.Count < 1)
            {
                MessageBox.Show("导入数据为空。");
            }

            CurrencyDal.CodeMaker.DataBase dal = new CurrencyDal.CodeMaker.DataBase();
            IDbLink       dldal     = new DbLink();
            DbLinkInfo    dlinfo    = dldal.DbLinkGetInfo(dinfo.DbLinkID);
            string        tableName = dinfo.Name;
            List <string> fieldlist = new List <string>();
            string        field     = tb_field.Text.Trim();

            field = field.Replace(" ", "");

            int          index     = tabControl1.SelectedIndex;
            DataTable    dt        = ds.Tables[index];
            DataBaseInfo dbinfo    = GetDbInfo(dinfo.DbLinkID);
            string       tablename = dinfo.Name;
            TableInfo    tinfo     = dbinfo.Tables[tablename];

            rst = dal.ImportData(dlinfo, tinfo, field, dt, out rstmsg);

            return(rst);
        }
コード例 #13
0
        private DbLinkInfo GetDbLinkInfo()
        {
            DbLinkInfo info = new DbLinkInfo();

            info.DbName         = tb_DbName.Text;
            info.UserName       = tb_UserName.Text;
            info.PassWord       = tb_Password.Text;
            info.DataSource     = tb_DataSource.Text;
            info.Port           = tb_Port.Text;
            info.DbAbbreviation = tb_DbAbbreviation.Text;
            info.ID             = tb_ID.Text == "" || tb_ID.Text == "0" ? 0 : int.Parse(tb_ID.Text);
            info.DbType         = int.Parse(cob_DbType.SelectedValue.ToString());
            info.Charset        = txt_Charset.Text;
            //switch (cob_DbType.Text)
            //{
            //    case "SQLServer":
            //        info.DbType = (int)DataBaseTypeEnum.SQLServer;
            //        break;
            //    case "Oracle":
            //        info.DbType = (int)DataBaseTypeEnum.Oracle;
            //        break;
            //    case "Access":
            //        info.DbType = (int)DataBaseTypeEnum.Access;
            //        break;
            //    case "SQLite":
            //        info.DbType = (int)DataBaseTypeEnum.SqLite;
            //        break;
            //    case "MySql":
            //        info.DbType = (int)DataBaseTypeEnum.MySql;
            //        break;
            //    case "MongoDB":
            //        info.DbType = (int)DataBaseTypeEnum.MongoDB;
            //        break;
            //    case "Redis":
            //        info.DbType = (int)DataBaseTypeEnum.Redis;
            //        break;
            //}

            return(info);
        }
コード例 #14
0
        /// <summary>
        /// 导出文件
        /// </summary>
        private void ExportData()
        {
            SaveFileDialog SaveFile = new SaveFileDialog();

            SaveFile.FileName = "temp.xls";
            //SaveFile.Filter = "Excel 工作簿(*.xlsx)|*.xlsx|Miscrosoft Office Excel 97-2003 工作表|*.xls|所有文件(*.*)|*.*";
            SaveFile.Filter           = "Miscrosoft Office Excel 97-2003 工作表|*.xls|excel07文件(*.xlsx)|*.xlsx|txt 文件 (*.txt)|*.txt|所有文件 (*.*)|*.*";
            SaveFile.RestoreDirectory = true;
            string filePath = "";
            string extend   = "";

            if (SaveFile.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            else
            {
                filePath = SaveFile.FileName;
                extend   = System.IO.Path.GetExtension(SaveFile.FileName);

                extend = extend.Replace(".", "");
            }

            string sqlmsg = "";
            string rstmsg = "";
            string sql    = textEditorControl.ActiveTextAreaControl.TextArea.SelectionManager.SelectedText.Trim();

            if (sql == "")
            {
                sql = textEditorControl.Text.Trim();
            }
            if (sql == "")
            {
                return;
            }
            sql = GetSqlZC(sql);
            sql = sql.Replace("\r\n", " ");

            ListItem item = DBToolStripComboBox.SelectedItem as ListItem;

            int DbLinkID = int.Parse(item.ID.ToString());

            if (DbLinkID == 0)
            {
                MessageBox.Show("请选择数据库");
            }
            IDbLink    ldal   = new DbLink();
            DbLinkInfo dlinfo = ldal.DbLinkGetInfo(DbLinkID);
            DataSet    ds     = dal.Run(dlinfo, sql, out sqlmsg, out rstmsg);

            rtb_Message.Text = sqlmsg;
            if (ds == null)
            {
                MessageBox.Show(rstmsg);
                return;
            }
            if (extend == "xls")
            {
                Common.Excel.DataSetToExcel(ds, filePath, out rstmsg);
            }
            else if (extend == "xlsx")
            {
            }
            else if (extend == "txt")
            {
                Common.FileHandle.DataSetToTxt(ds, filePath, out rstmsg);
            }
            MessageBox.Show(rstmsg);
        }
コード例 #15
0
        private void RunToolScriptBtn_Click(object sender, EventArgs e)
        {
            string sqlmsg = "";
            string rstmsg = "";
            string sql    = textEditorControl.ActiveTextAreaControl.TextArea.SelectionManager.SelectedText.Trim();

            sql = GetSqlZC(sql);
            if (sql == "")
            {
                sql = textEditorControl.Text.Trim();
            }
            if (sql == "")
            {
                return;
            }
            sql = sql.Replace("\r\n", " ");

            ListItem item = DBToolStripComboBox.SelectedItem as ListItem;

            int DbLinkID = int.Parse(item.ID.ToString());

            if (DbLinkID == 0)
            {
                MessageBox.Show("请选择数据库");
            }

            List <DataTable> listDt = new List <DataTable>();
            IDbLink          ldal   = new  DbLink();
            DbLinkInfo       dlinfo = ldal.DbLinkGetInfo(DbLinkID);

            if (dlinfo.DbType == (int)DataBaseTypeEnum.Oracle)
            {
                string[] arr = sql.Split(';');
                foreach (var sqlitem in arr)
                {
                    string  sqlorc = sqlitem.Replace("\r\n", "");
                    DataSet ds     = dal.Run(dlinfo, sqlorc, out sqlmsg, out rstmsg);
                    if (ds != null)
                    {
                        listDt.Add(ds.Tables[0]);
                    }
                }
            }
            else
            {
                DataSet ds = dal.Run(dlinfo, sql, out sqlmsg, out rstmsg);
                rtb_Message.Text = sqlmsg;
                if (ds == null)
                {
                    MessageBox.Show(rstmsg);
                    return;
                }
                for (int i = 0; i < ds.Tables.Count; i++)
                {
                    listDt.Add(ds.Tables[i]);
                }
            }

            this.tabControl1.SelectTab("tabPage1");
            DGV1.DataSource = null;
            DGV2.DataSource = null;
            DGV3.DataSource = null;
            DGV4.DataSource = null;
            DGV5.DataSource = null;
            for (int i = 0; i < listDt.Count; i++)
            {
                switch (i)
                {
                case 0:
                    DGV1.DataSource = listDt[i];
                    break;

                case 1:
                    DGV2.DataSource = listDt[i];
                    break;

                case 2:
                    DGV3.DataSource = listDt[i];
                    break;

                case 3:
                    DGV4.DataSource = listDt[i];
                    break;

                case 4:
                    DGV5.DataSource = listDt[i];
                    break;
                }
            }
        }
コード例 #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type">操作类型:2 更新表字段,3 复制sql</param>
        /// <param name="rstmsg"></param>
        /// <returns></returns>
        private int UpdateFilde(int type, out string rstmsg)
        {
            int rst = 0;

            rstmsg = "";
            btnRefresh_Click(null, null);
            //导入文件数据
            if (ds == null)
            {
                MessageBox.Show("导入数据为空。");
            }
            if (ds.Tables.Count < 1 || ds.Tables[0].Rows.Count < 1)
            {
                MessageBox.Show("导入数据为空。");
            }

            CurrencyDal.CodeMaker.DataBase dal = new CurrencyDal.CodeMaker.DataBase();
            IDbLink       dldal     = new DbLink();
            DbLinkInfo    dlinfo    = dldal.DbLinkGetInfo(dinfo.DbLinkID);
            string        tableName = dinfo.Name;
            List <string> fieldlist = new List <string>();
            string        field     = tb_field.Text.Trim();

            field = field.Replace(" ", "");

            int          index     = tabControl1.SelectedIndex;
            DataTable    dt        = ds.Tables[index];
            DataBaseInfo dbinfo    = GetDbInfo(dinfo.DbLinkID);
            string       tablename = dinfo.Name;
            TableInfo    tinfo     = dbinfo.Tables[dinfo.Name];

            if (!string.IsNullOrEmpty(txt_TargetTable.Text.Trim()) && type == 3)
            {
                tablename = txt_TargetTable.Text.Trim();
            }
            string keyField = tb_Key.Text.Trim(); //主键
            var    listSql  = dal.GetUpdateSql(dlinfo, tinfo, field, keyField, tb_Where.Text.Trim(), dt, out rstmsg);

            if (type == 2)
            {
                try
                {
                    rst = dalRunSql.ExeSqlTran(dlinfo, listSql, out rstmsg);
                }
                catch (Exception ex)
                {
                    rst    = -1;
                    rstmsg = "更新失败。" + ex.Message;
                    return(rst);
                }

                if (rst >= 1)
                {
                    rstmsg = "总共" + dt.Rows.Count + "行数据,更新成功" + rst + "行数据。";
                }
            }
            else if (type == 3)
            {
                string strData = "";
                if (listSql != null && listSql.Count > 0)
                {
                    foreach (var item in listSql)
                    {
                        if (!string.IsNullOrEmpty(strData))
                        {
                            strData = strData + ";" + Environment.NewLine;
                        }
                        strData = strData + item;
                    }
                    Clipboard.SetDataObject(strData);
                    rstmsg = string.Format("复制Sql更新语句{0}行", listSql.Count);
                }
                else
                {
                    rstmsg = "复制Sql更新语句0行";
                }
            }

            return(rst);
        }
コード例 #17
0
        /// <summary>
        /// 转换坐标/更新数据
        /// </summary>
        /// <param name="type">操作类型:1 查询,2 更新表字段,3 复制sql</param>
        /// <param name="rstmsg"></param>
        /// <returns></returns>
        private int Coordinate(int type, out string rstmsg, out DataSet rtds)
        {
            int rst = 0;

            rstmsg = "";
            string sqlmsg = "";

            rtds = new DataSet();
            try
            {
                string keyField   = tb_Key.Text.Trim(); //主键
                string mapXField  = "";                 //经度
                string mapYField  = "";                 //纬度
                string mapXYField = "";                 //坐标集合

                CurrencyDal.CodeMaker.DataBase dal = new CurrencyDal.CodeMaker.DataBase();
                IDbLink       dldal           = new DbLink();
                DbLinkInfo    dlinfo          = dldal.DbLinkGetInfo(dinfo.DbLinkID);
                string        tableName       = dinfo.Name;
                string        targetTableName = "[]";
                List <string> fieldlist       = new List <string>();
                string        field           = tb_field.Text.Trim();
                field = field.Replace(" ", "");

                string[] fieldItem = field.Split(',');
                for (int i = 0; i < fieldItem.Length; i++)
                {
                    if (!string.IsNullOrEmpty(fieldItem[i]))
                    {
                        string strfield     = fieldItem[i];
                        string strFieldLast = "";
                        if (!string.IsNullOrEmpty(strfield))
                        {
                            strFieldLast = strfield.Substring(strfield.Length - 1, 1);
                        }
                        if (strFieldLast.ToLower().IndexOf("x") >= 0 && strfield.ToLower().IndexOf("xy") < 0)
                        {
                            mapXField = strfield;
                        }
                        else if (strFieldLast.ToLower().IndexOf("y") >= 0 && strfield.ToLower().IndexOf("xy") < 0)
                        {
                            mapYField = strfield;
                        }
                        else if (strfield.ToLower() == txt_Coordinate.Text.Trim().ToLower() && !string.IsNullOrEmpty(txt_Coordinate.Text.Trim()))
                        {
                            mapXYField = txt_Coordinate.Text.Trim();
                        }
                        fieldlist.Add(strfield);
                    }
                }

                DataBaseInfo dbinfo    = GetDbInfo(dinfo.DbLinkID);
                string       tablename = dinfo.Name;
                TableInfo    tinfo     = dbinfo.Tables[dinfo.Name];

                if (!string.IsNullOrEmpty(txt_TargetTable.Text.Trim()) && type == 3)
                {
                    targetTableName = txt_TargetTable.Text.Trim();
                }
                //查询数据
                string sqlQuery = tb_Sql.Text.Trim();

                if (string.IsNullOrEmpty(sqlQuery))
                {
                    sqlQuery = "Select ";
                    if (!string.IsNullOrEmpty(tb_field.Text.Trim()))
                    {
                        sqlQuery += tb_field.Text.Trim() + " ";
                    }
                    else
                    {
                        rst    = -1;
                        rstmsg = "请输入sql语句";
                        return(rst);
                    }
                    sqlQuery += " From " + tablename + " ";
                    if (!string.IsNullOrEmpty(tb_Where.Text.Trim()))
                    {
                        sqlQuery += " Where " + tb_Where.Text.Trim();
                    }
                }

                DataSet dsr = dalRunSql.Run(dlinfo, sqlQuery, out sqlmsg, out rstmsg);
                rtds = dsr;
                if (type == 1)
                {
                    return(1);           //查询数据
                }
                List <string> listSql = new List <string>();

                int    coordinateType  = 0;          //1 百度地图转天地图,2天地图转百度地图
                char   sourceDelimiter = new char(); //源分割符 “_”、“|”都转为“|”
                string targetDelimiter = "";         //目标分割符 “|”天地图
                if (cb_Coordinate1.Checked)
                {
                    sourceDelimiter = '|';
                    targetDelimiter = "|";
                    coordinateType  = 1;
                }
                else if (cb_Coordinate.Checked)
                {
                    sourceDelimiter = '|';
                    targetDelimiter = "|";
                    coordinateType  = 2;
                }

                string MapX = "";
                string MapY = "";

                if (dsr == null && dsr.Tables[0] == null && dsr.Tables[0].Rows.Count == 0)
                {
                    rstmsg = "未查询到数据";
                    return(1);
                }

                foreach (DataRow dr in dsr.Tables[0].Rows)
                {
                    string MapListOneLevel = "";
                    string MapList         = "";
                    if (!string.IsNullOrEmpty(mapXField) && !string.IsNullOrEmpty(mapYField))
                    {
                        MapX = dr[mapXField].ToString().Trim();
                        MapY = dr[mapYField].ToString().Trim();
                        GetMapXAndMapY(coordinateType, MapX, MapY, out MapX, out MapY);
                        #region 坐标转换 已不用

                        //if (!string.IsNullOrEmpty(MapX) && !string.IsNullOrEmpty(MapY))
                        //{
                        //    double mapx = double.Parse(MapX); double mapy = double.Parse(MapY);
                        //    if (mapx > 0 && mapy > 0)
                        //    {
                        //        if (coordinateType == 1)
                        //        {
                        //            //百度地图转天地图
                        //            double[] gcjarr = MapTransform.BD09ToGCJ02(mapx, mapy);
                        //            double[] wgsarr = MapTransform.GCJ02ToWGS84(gcjarr[0], gcjarr[1]);
                        //            MapX = Math.Round(wgsarr[0], 6).ToString();
                        //            MapY = Math.Round(wgsarr[1], 6).ToString();

                        //        }
                        //        else if (coordinateType == 2)
                        //        {
                        //            //天地图转百度地图
                        //            double[] GCJ02 = MapTransform.WGS84ToGCJ02(mapx, mapy);
                        //            double[] BD09 = MapTransform.GCJ02ToBD09(GCJ02[0], GCJ02[1]);
                        //            MapX = Math.Round(BD09[0], 6).ToString();
                        //            MapY = Math.Round(BD09[1], 6).ToString();
                        //        }
                        //    }
                        //}
                        #endregion
                    }

                    if (!string.IsNullOrEmpty(mapXYField))
                    {
                        #region 坐标集合转换
                        string mapxy = dr[mapXYField].ToString();
                        mapxy = mapxy.Replace("_", "|");     //源分割符 “_”、“|”都转为“|”
                        List <string> mapListOneLevel = new List <string>();
                        List <string> mapList         = new List <string>();
                        string[]      mapOneLevel     = new string[0];
                        if (!string.IsNullOrEmpty(mapxy.Trim()))
                        {
                            mapOneLevel = mapxy.Split(sourceDelimiter);
                        }
                        foreach (var item in mapOneLevel)
                        {
                            string[] maps = new string[0];
                            if (!string.IsNullOrEmpty(item.Trim()))
                            {
                                maps = item.Split(';');
                            }
                            foreach (string map in maps)
                            {
                                if (string.IsNullOrEmpty(map.Trim()))
                                {
                                    continue;
                                }
                                string s_mapx = "", s_mapy = "";
                                try
                                {
                                    s_mapx = map.Split(',')[0];
                                    s_mapy = map.Split(',')[1];
                                }
                                catch (Exception ex) { continue; }
                                GetMapXAndMapY(coordinateType, s_mapx, s_mapy, out s_mapx, out s_mapy);
                                #region 坐标转换 已不用
                                //double smapx = 0, smapy = 0;
                                //double.TryParse(s_mapx, out smapx); double.TryParse(s_mapy, out smapy);
                                //if (smapx > 0 && smapy > 0)
                                //{
                                //    if (coordinateType == 1)
                                //    {
                                //        //百度地图转天地图
                                //        double[] gcjarr = MapTransform.BD09ToGCJ02(smapx, smapy);
                                //        double[] wgsarr = MapTransform.GCJ02ToWGS84(gcjarr[0], gcjarr[1]);
                                //        s_mapx = Math.Round(wgsarr[0], 6).ToString();
                                //        s_mapy = Math.Round(wgsarr[1], 6).ToString();
                                //    }
                                //    else if (coordinateType == 2)
                                //    {
                                //        //天地图转百度地图
                                //        double[] GCJ02 = MapTransform.WGS84ToGCJ02(smapx, smapy);
                                //        double[] BD09 = MapTransform.GCJ02ToBD09(GCJ02[0], GCJ02[1]);
                                //        s_mapx = Math.Round(BD09[0], 6).ToString();
                                //        s_mapy = Math.Round(BD09[1], 6).ToString();
                                //    }
                                //}
                                #endregion

                                mapList.Add(s_mapx + "," + s_mapy);
                            }
                            //MapList = string.Join(";", mapList);
                            foreach (var mapItem in mapList)
                            {
                                if (!string.IsNullOrEmpty(MapList))
                                {
                                    MapList = MapList + ";";
                                }
                                MapList = MapList + mapItem;
                            }
                            if (mapListOneLevel.Count > 0 && !string.IsNullOrEmpty(MapList))
                            {
                                mapListOneLevel.Add(targetDelimiter);
                            }

                            if (!string.IsNullOrEmpty(MapList))
                            {
                                mapListOneLevel.Add(MapList);
                            }
                            MapList = "";
                            mapList.Clear();
                        }

                        foreach (var mapItemOneLevel in mapListOneLevel)
                        {
                            MapListOneLevel = MapListOneLevel + mapItemOneLevel;
                        }
                        #endregion
                    }

                    //需要更新的字段
                    string filedData = "";
                    if (!string.IsNullOrEmpty(mapXField) && !string.IsNullOrEmpty(mapYField) && !string.IsNullOrEmpty(MapX) && !string.IsNullOrEmpty(MapY))
                    {
                        if (filedData != "")
                        {
                            filedData = ",";
                        }
                        filedData = mapXField + "=" + MapX + " ," + mapYField + "=" + MapY;
                    }
                    if (!string.IsNullOrEmpty(mapXYField) && !string.IsNullOrEmpty(MapListOneLevel))
                    {
                        if (filedData != "")
                        {
                            filedData = filedData + ",";
                        }
                        filedData = filedData + mapXYField + "='" + MapListOneLevel + "'";
                    }
                    if (!string.IsNullOrEmpty(filedData))
                    {
                        StringBuilder strBuilder = new StringBuilder();
                        if (type == 3)
                        {
                            strBuilder.Append(" Update " + targetTableName);
                        }
                        else
                        {
                            strBuilder.Append(" Update " + tablename);
                        }
                        strBuilder.Append(" Set ");
                        strBuilder.Append(filedData);
                        strBuilder.Append(" Where " + keyField + "='" + dr[keyField].ToString().Trim() + "'");
                        listSql.Add(strBuilder.ToString());
                    }
                    MapListOneLevel = "";
                }

                if (type == 2)
                {
                    rst = dalRunSql.ExeSqlTran(dlinfo, listSql, out rstmsg);      // 更新地图坐标
                }
                else if (type == 3)
                {
                    //导出查询语句
                    string strData = "";
                    if (listSql != null && listSql.Count > 0)
                    {
                        foreach (var item in listSql)
                        {
                            if (!string.IsNullOrEmpty(strData))
                            {
                                strData = strData + ";" + Environment.NewLine;
                            }
                            strData = strData + item;
                        }
                        Clipboard.SetDataObject(strData);
                        rstmsg = string.Format("复制Sql更新语句{0}行", listSql.Count);
                    }
                    else
                    {
                        rstmsg = "复制Sql更新语句0行";
                    }
                }
            }
            catch (Exception ex)
            {
                rst    = -1;
                rstmsg = ex.Message;
            }

            return(rst);
        }
コード例 #18
0
        public DataSet Run(DbLinkInfo info, string sql, out string sqlmsg, out string rstmsg)
        {
            sqlmsg = "";
            rstmsg = "";
            DataSet ds = null;

            try
            {
                DataBaseTypeEnum fc = DataBaseType.GetDataBaseType(info.DbType);
                System.Data.Common.DbConnection conn = DBConfig.GetDbConnection(info);
                DbHelper.SqlErrorList = null;
                switch (fc)
                {
                case DataBaseTypeEnum.SQLServer:
                    sql = sql + " print '('+convert(varchar(10), @@rowcount)+'行受影响)'";
                    ds  = DbHelper.ExecuteDataSetCurrency(conn, CommandType.Text, sql, null);
                    break;

                case DataBaseTypeEnum.Oracle:
                    //sql = @"declare n number; begin "+sql+" n:=sql%rowcount; dbms_output.put_line(n); end; ";
                    ds = DbHelper.ExecuteDataSetCurrency(conn, CommandType.Text, sql, null);
                    break;

                case DataBaseTypeEnum.Access:
                    ds = DbHelper.ExecuteDataSetCurrency(conn, CommandType.Text, sql, null);
                    break;

                case DataBaseTypeEnum.SQLite:
                    ds = DbHelper.ExecuteDataSetCurrency(conn, CommandType.Text, sql, null);
                    break;

                case DataBaseTypeEnum.MySql:
                    ds = DbHelper.ExecuteDataSetCurrency(conn, CommandType.Text, sql, null);
                    break;
                }

                StringBuilder ser = new StringBuilder();
                switch (fc)
                {
                case DataBaseTypeEnum.SQLServer:

                    if (DbHelper.SqlErrorList != null)
                    {
                        for (int i = 0; i < DbHelper.SqlErrorList.Count; i++)
                        {
                            System.Data.SqlClient.SqlError r = DbHelper.SqlErrorList[i];
                            //ser.Append("从 SQL Server 中获取一个数值错误代码,它表示错误、警告或“未找到数据”消息。" + r.State.ToString());
                            //ser.Append("获取生成错误的提供程序的名称。" + r.Source.ToString());
                            //ser.Append("获取生成错误的 SQL Server 实例的名称。" + r.Server.ToString());
                            //ser.Append("获取生成错误的存储过程或远程过程调用 (RPC) 的名称。" + r.Procedure.ToString());
                            //ser.Append("获取一个标识错误类型的数字。" + r.Number.ToString());
                            //ser.Append("获取对错误进行描述的文本。" + r.Message.ToString());
                            //ser.Append("从包含错误的 Transact-SQL 批命令或存储过程中获取行号。" + r.LineNumber.ToString());
                            //ser.Append("获取从 SQL Server 返回的错误的严重程度。" + r.Class.ToString());
                            if (i > 0)
                            {
                                ser.Append("\r\n");
                            }
                            ser.Append(r.Message);
                        }
                    }
                    break;

                case DataBaseTypeEnum.Oracle:
                    if (DbHelper.OracleErrorList != null)
                    {
                        for (int i = 0; i < DbHelper.OracleErrorList.Count; i++)
                        {
                            Devart.Data.Oracle.OracleError r = DbHelper.OracleErrorList[i];
                            if (i > 0)
                            {
                                ser.Append("\r\n");
                            }
                            ser.Append(r.Message);
                        }
                    }
                    break;

                case DataBaseTypeEnum.Access:
                    if (DbHelper.OleDbErrorList != null)
                    {
                        for (int i = 0; i < DbHelper.OleDbErrorList.Count; i++)
                        {
                            System.Data.OleDb.OleDbError r = DbHelper.OleDbErrorList[i];
                            if (i > 0)
                            {
                                ser.Append("\r\n");
                            }
                            ser.Append(r.Message);
                        }
                    }
                    break;
                }
                sqlmsg = ser.ToString();
            }
            catch (Exception ex)
            {
                rstmsg = "操作失败。" + ex.Message;
            }
            return(ds);
        }
コード例 #19
0
        private void btn_import_Click(object sender, EventArgs e)
        {
            //导入Excel表格时将列展开,如果列显示不全可能缺少某列
            int    rst    = 0;
            string rstmsg = "";

            //获取文件数据
            //rst = GetDataSet(out rstmsg);
            //if (rst != 1)
            //{
            //    MessageBox.Show(rstmsg);
            //    return;
            //}
            btnRefresh_Click(null, null);
            //导入文件数据
            if (ds == null)
            {
                MessageBox.Show("导入数据为空。");
                return;
            }
            if (ds == null || ds.Tables == null || ds.Tables.Count < 1 || ds.Tables[0].Rows.Count < 1)
            {
                MessageBox.Show("导入数据为空。");
                return;
            }

            CurrencyDal.CodeMaker.DataBase dal = new CurrencyDal.CodeMaker.DataBase();
            IDbLink dldal = new DbLink();


            DbLinkInfo dlinfo    = new DbLinkInfo();
            string     tableName = "";

            if (ckb_IsAddTable.Checked)
            {
                var lisitem  = comboBoxDB.SelectedItem as ListItem;
                int DbLinkID = string.IsNullOrEmpty(lisitem.ID) ? 0 : int.Parse(lisitem.ID);
                dlinfo         = dldal.DbLinkGetInfo(DbLinkID);
                tableName      = tb_AddTableName.Text.Trim();
                dinfo          = new DbDataInfo();
                dinfo.DbLinkID = DbLinkID;
                dinfo.DbName   = dlinfo.DbName;
                dinfo.Name     = tableName;
                dinfo.NameType = (int)DbDataTypeEnum.表;
            }
            else
            {
                dlinfo    = dldal.DbLinkGetInfo(dinfo.DbLinkID);
                tableName = dinfo.Name;
            }

            List <string> fieldlist = new List <string>();
            string        field     = tb_field.Text.Trim();

            field = field.Replace(" ", "");

            DataBaseInfo dbinfo = new DataBaseInfo();
            int          index  = tabControl1.SelectedIndex;
            DataTable    dt     = ds.Tables[index];

            #region 新建表
            if (ckb_IsAddTable.Checked && dt != null && dt.Rows.Count > 0)
            {
                string sqlmsg = "";
                CurrencyDal.CodeMaker.RunSql rdal = new CurrencyDal.CodeMaker.RunSql();
                field = "";
                StringBuilder sql = new StringBuilder();
                tableName = tb_AddTableName.Text.Trim();

                string  sqljc = "select 1 As Num from " + tableName;
                DataSet dsjs  = rdal.Run(dlinfo, sql.ToString(), out sqlmsg, out rstmsg);
                try
                {
                    if (dsjs != null && dsjs.Tables[0] != null)
                    {
                        MessageBox.Show("表" + tableName + "已存在。");
                        return;
                    }
                }
                catch { }


                sql.Append("Create Table ");
                sql.Append(tableName);
                sql.Append(" ( ");
                string createField = "";
                string fieldType   = "";
                if (dlinfo.DbType == 1)
                {
                    fieldType = "nvarchar";
                }
                else if (dlinfo.DbType == 2)
                {
                    fieldType = "nvarchar2";
                }
                else if (dlinfo.DbType == 3)
                {
                    fieldType = "nvarchar";
                }
                else
                {
                    fieldType = "nvarchar";
                }

                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    string cname = dt.Columns[i].ColumnName;
                    //sql.Append("[" + cname + "] [nvarchar](255) NULL,");

                    if (createField == "")
                    {
                        createField = cname + " " + fieldType + "(255) NULL";
                    }
                    else
                    {
                        createField += "," + cname + " " + fieldType + "(255) NULL";
                    }

                    if (field == "")
                    {
                        field = cname;
                    }
                    else
                    {
                        field += "," + cname;
                    }
                }
                sql.Append(createField);
                sql.Append(")");

                DataSet dset = rdal.Run(dlinfo, sql.ToString(), out sqlmsg, out rstmsg);
            }
            #endregion

            dbinfo = GetDbInfo(dinfo.DbLinkID);
            TableInfo tinfo = dbinfo.Tables[tableName];
            rst = dal.ImportData(dlinfo, tinfo, field, dt, out rstmsg);
            MessageBox.Show(rstmsg);
        }