Exemple #1
0
        public static void DeleteIndex(SqlConnection conn, SqlCommand cmd, PdmTable pTable)
        {
            ArrayList paras = new ArrayList();

            paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, pTable.DBID));
            paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, pTable.TableCode));

            DBUtils.ExecuteNonQuery(conn, cmd, CommandType.StoredProcedure, "dbo.P_Delete_Index", paras);
        }
Exemple #2
0
        public static void SaveTableSet(PdmTable pTable)
        {
            ArrayList paras = new ArrayList();

            paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, pTable.DBID));
            paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, pTable.TableCode));
            paras.Add(DBUtils.MakeInParam("TableSet", SqlDbType.NVarChar, 1000, pTable.TableSet));

            DBUtils.ExecuteNonQuery(CommandType.StoredProcedure, "dbo.P_Save_TableSet", paras);
        }
Exemple #3
0
        public static void LogKey(SqlConnection conn, SqlCommand cmd, PdmTable pTable, bool islog)
        {
            ArrayList paras = new ArrayList();

            paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, pTable.DBID));
            paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, pTable.TableCode));
            paras.Add(DBUtils.MakeInParam("IsLog", SqlDbType.Bit, islog));

            DBUtils.ExecuteNonQuery(conn, cmd, CommandType.StoredProcedure, "dbo.P_Log_Key", paras);
        }
Exemple #4
0
        public static void SaveColumnTable(PdmTable pTable, List <ColumnTable> items)
        {
            SqlConnection conn = null;
            SqlCommand    cmd  = null;

            try
            {
                conn = DBUtils.GetConnection();
                cmd  = DBUtils.GetCommand();

                cmd.Transaction = conn.BeginTransaction();

                ArrayList paras = new ArrayList();
                paras.Clear();
                paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, pTable.DBID));
                paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, pTable.TableCode));

                DBUtils.ExecuteNonQuery(conn, cmd, CommandType.StoredProcedure, "dbo.P_Delete_ColumnTable", paras);

                int i = 1;
                foreach (ColumnTable item in items)
                {
                    paras.Clear();
                    paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, item.DBID));
                    paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, item.TableCode));
                    paras.Add(DBUtils.MakeInParam("ColumnSerial", SqlDbType.Int, i));
                    paras.Add(DBUtils.MakeInParam("ColumnCode", SqlDbType.NVarChar, 40, item.ColumnCode));
                    paras.Add(DBUtils.MakeInParam("RelaTable", SqlDbType.NVarChar, 40, item.RelaTable));
                    paras.Add(DBUtils.MakeInParam("RelaColumn", SqlDbType.NVarChar, 40, item.RelaColumn));
                    paras.Add(DBUtils.MakeInParam("DisplayColumn", SqlDbType.NVarChar, 40, item.DisplayColumn));
                    paras.Add(DBUtils.MakeInParam("Prefix", SqlDbType.NVarChar, 2, item.Prefix));

                    DBUtils.ExecuteNonQuery(conn, cmd, CommandType.StoredProcedure, "dbo.P_Save_ColumnTable", paras);

                    i++;
                }

                cmd.Transaction.Commit();
            }
            catch
            {
                cmd.Transaction.Rollback();
                throw;
            }
            finally
            {
                DBUtils.SetDispose(conn, cmd);
            }
        }
Exemple #5
0
        public static DataTable GetColumnByTable(SqlConnection conn, SqlCommand cmd, PdmTable pTable)
        {
            DataTable tblMain;

            try
            {
                ArrayList paras = new ArrayList();
                paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, pTable.DBID));
                paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, pTable.TableCode));

                tblMain           = DBUtils.ExecuteDataTable(conn, cmd, CommandType.StoredProcedure, "dbo.P_Get_ColumnByTable", paras);
                tblMain.TableName = "SelectMain";
            }
            catch { throw; }

            return(tblMain);
        }
        public override List <TableEntity> FillTables(List <string> tableNames)
        {
            IList <PdmTable> pdmTables = GetPdmTables();
            List <TableInfo> tables    = new List <TableInfo>();

            if (pdmTables != null)
            {
                foreach (string tableName in tableNames)
                {
                    PdmTable  pdmTable = pdmTables.Where(o => o.Code.ToLower() == tableName.ToLower()).FirstOrDefault();
                    TableInfo table    = GetTableInfo(pdmTable);
                    if (table != null)
                    {
                        tables.Add(table);
                    }
                }
            }
            return(ReaderTables(tables));
        }
 protected TableInfo GetTableInfo(PdmTable pdmTable)
 {
     if (pdmTable != null)
     {
         TableInfo table = new TableInfo();
         table.TableName = pdmTable.Code;
         table.Attr      = pdmTable.Name.TrimEnd('表');
         table.Remark    = pdmTable.Comment;
         if (pdmTable.Columns != null)
         {
             foreach (PdmColumn pdmColumn in pdmTable.Columns)
             {
                 ColumnInfo column = new ColumnInfo();
                 column.Field        = pdmColumn.Code;
                 column.Display      = pdmColumn.Name;
                 column.Remark       = pdmColumn.Comment;
                 column.DataType     = Regex.Replace(pdmColumn.DataType, @"\(\d*,?\d*\)", "").ToLower();
                 column.IsNullable   = !pdmColumn.Mandatory;
                 column.DefaultValue = string.Empty;
                 column.Length       = string.IsNullOrEmpty(pdmColumn.Length) ? 0 : Convert.ToInt32(pdmColumn.Length);
                 if (pdmColumn.IdEntity)
                 {
                     column.IsIdentity = true;
                     column.IsDataKey  = true;
                 }
                 //设置主键
                 if (pdmTable.Keys != null)
                 {
                     var key = pdmTable.Keys.Where(o => o.Code.ToLower() == pdmColumn.Code.ToLower()).FirstOrDefault();
                     if (key != null)
                     {
                         column.IsDataKey = true;
                     }
                 }
                 table.Columns.Add(column);
             }
         }
         return(table);
     }
     return(null);
 }
Exemple #8
0
 public static DataTable GetColumnByTable(PdmTable pTable)
 {
     return(GetColumnByTable(null, null, pTable));
 }
Exemple #9
0
        public static void GetTableByCode(PdmTable pTable, int DBID, string TableCode)
        {
            SqlConnection conn = null;
            SqlCommand    cmd  = null;

            try
            {
                conn = DBUtils.GetConnection();
                cmd  = DBUtils.GetCommand();

                ArrayList paras = new ArrayList();
                paras.Clear();
                paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, DBID));
                paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, TableCode));

                SqlDataReader reader = DBUtils.ExecuteReader(conn, cmd, CommandType.StoredProcedure, "dbo.P_Get_TableByCode", paras);

                pTable.OnInit();

                if (reader.Read())
                {
                    pTable.OnPopulate(reader);
                }

                reader.Close();

                if (!String.IsNullOrEmpty(pTable.TableCode))
                {
                    reader = DBUtils.ExecuteReader(conn, cmd, CommandType.StoredProcedure, "dbo.P_Get_SetByCode", paras);

                    if (reader.Read())
                    {
                        pTable.TableSet = reader["TableSet"] as string;
                    }
                    else
                    {
                        pTable.TableSet = String.Empty;
                    }

                    reader.Close();

                    reader = DBUtils.ExecuteReader(conn, cmd, CommandType.StoredProcedure, "dbo.P_Get_ColumnByTable", paras);

                    while (reader.Read())
                    {
                        PdmColumn item = new PdmColumn(reader);
                        pTable.AddColumn(item);
                    }

                    reader.Close();

                    reader = DBUtils.ExecuteReader(conn, cmd, CommandType.StoredProcedure, "dbo.P_Get_KeyByTable", paras);

                    while (reader.Read())
                    {
                        PdmKey item = new PdmKey(reader);
                        pTable.AddKey(item);
                    }

                    reader.Close();

                    reader = DBUtils.ExecuteReader(conn, cmd, CommandType.StoredProcedure, "dbo.P_Get_IndexByTable", paras);

                    while (reader.Read())
                    {
                        PdmIndex item = new PdmIndex(reader);
                        pTable.AddIndex(item);
                    }

                    reader.Close();

                    foreach (PdmKey pKey in pTable.Keys)
                    {
                        paras.Clear();
                        paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, DBID));
                        paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, pTable.TableCode));
                        paras.Add(DBUtils.MakeInParam("KeyCode", SqlDbType.NVarChar, 40, pKey.KeyCode));

                        reader = DBUtils.ExecuteReader(conn, cmd, CommandType.StoredProcedure, "dbo.P_Get_ColumnByKey", paras);

                        while (reader.Read())
                        {
                            foreach (PdmColumn pColumn in pTable.Columns)
                            {
                                if (pColumn.ColumnCode == reader["ColumnCode"].ToString())
                                {
                                    pKey.AddColumn(pColumn);
                                    break;
                                }
                            }
                        }

                        reader.Close();
                    }

                    foreach (PdmIndex pIndex in pTable.Indexs)
                    {
                        paras.Clear();
                        paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, DBID));
                        paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, pTable.TableCode));
                        paras.Add(DBUtils.MakeInParam("IndexCode", SqlDbType.NVarChar, 40, pIndex.IndexCode));

                        reader = DBUtils.ExecuteReader(conn, cmd, CommandType.StoredProcedure, "dbo.P_Get_ColumnByIndex", paras);

                        while (reader.Read())
                        {
                            foreach (PdmColumn pColumn in pTable.Columns)
                            {
                                if (pColumn.ColumnCode == reader["ColumnCode"].ToString())
                                {
                                    pIndex.AddColumn(pColumn);
                                    break;
                                }
                            }
                        }

                        reader.Close();
                    }
                }
            }
            catch { throw; }
            finally
            {
                DBUtils.SetDispose(conn, cmd);
            }
        }
Exemple #10
0
        private void savefile_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(filename.Text))
            {
                MessageBox.Show("数据库定义文件不能为空!");
                return;
            }

            if (String.IsNullOrEmpty(dbname.Text))
            {
                MessageBox.Show("数据库名称不能为空!");
                return;
            }

            if (String.IsNullOrEmpty(dbcode.Text))
            {
                MessageBox.Show("数据库代码不能为空!");
                return;
            }

            if (ddlProject.SelectedValue.ToString() == DropAddFlag.Select.ToString())
            {
                Global.ShowSysInfo("请选择所属项目!");
                return;
            }

            SqlConnection conn = null;
            SqlCommand    cmd  = null;

            try
            {
                PdmHelper pdm = new PdmHelper(filename.Text);
                pdm.InitData();
                conn = DBUtils.GetConnection();
                cmd  = DBUtils.GetCommand();

                cmd.Transaction = conn.BeginTransaction();

                #region Save DB

                ArrayList paras = new ArrayList();
                paras.Add(DBUtils.MakeInParam("DBCode", SqlDbType.NVarChar, 40, dbcode.Text));
                SqlDataReader reader = DBUtils.ExecuteReader(conn, cmd, CommandType.StoredProcedure, "dbo.P_Get_DBByCode", paras);

                PdmDatabase db = new PdmDatabase();

                if (reader.Read())
                {
                    db.OnPopulate(reader);
                }

                reader.Close();

                if (String.IsNullOrEmpty(db.DBCode))
                {
                    db.DBCode = dbcode.Text;
                    db.DBName = dbname.Text;
                }

                db.ProjectID = ddlProject.SelectedValue.ToString();

                if (db.DBID > 0)
                {
                    paras.Clear();
                    paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, db.DBID));
                    DBUtils.ExecuteNonQuery(conn, cmd, CommandType.StoredProcedure, "dbo.P_Delete_Info", paras);
                }

                //if (db.DBID <= 0)
                //{
                // 新数据库文件
                paras.Clear();
                paras.Add(DBUtils.MakeOutParam("DBID", SqlDbType.Int));
                paras.Add(DBUtils.MakeInParam("DBName", SqlDbType.NVarChar, 40, db.DBName));
                paras.Add(DBUtils.MakeInParam("DBCode", SqlDbType.NVarChar, 40, db.DBCode));
                paras.Add(DBUtils.MakeInParam("IsLog", SqlDbType.Bit, cbLog.Checked));
                paras.Add(DBUtils.MakeInParam("DBType", SqlDbType.Int, DataBaseType.MySql));
                paras.Add(DBUtils.MakeInParam("ProjectID", SqlDbType.VarChar, db.ProjectID));
                paras.Add(DBUtils.MakeInParam("ACTION", SqlDbType.Int, DataProviderAction.Create));

                DBUtils.ExecuteNonQuery(conn, cmd, CommandType.StoredProcedure, "dbo.P_Save_DB", paras);

                db.DBID = ((SqlParameter)paras[0]).Value != DBNull.Value ? Convert.ToInt32(((SqlParameter)paras[0]).Value) : 0;

                db.DBSerial = 0;
                //}
                //else
                //{
                //    paras.Clear();
                //    paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, db.DBID));
                //    paras.Add(DBUtils.MakeInParam("DBName", SqlDbType.NVarChar, 40, db.DBName));
                //    paras.Add(DBUtils.MakeInParam("DBCode", SqlDbType.NVarChar, 40, db.DBCode));
                //    paras.Add(DBUtils.MakeInParam("ProjectID", SqlDbType.VarChar, db.ProjectID));
                //    paras.Add(DBUtils.MakeInParam("IsLog", SqlDbType.Bit, cbLog.Checked));
                //    paras.Add(DBUtils.MakeInParam("ACTION", SqlDbType.Int, DataProviderAction.Update));

                //    DBUtils.ExecuteNonQuery(conn, cmd, CommandType.StoredProcedure, "dbo.P_Save_DB", paras);

                //    if (cbLog.Checked)
                //        db.DBSerial += 1;
                //}

                # endregion Save DB


                # region Save Table & Columns

                PdmTable  oTable  = new PdmTable();
                PdmColumn oColumn = new PdmColumn();

                foreach (PdmTable pTable in pdm.Tables)
                {
                    pTable.DBID = db.DBID;
                    oTable.OnInit();

                    // 判断该表是否已经存在

                    paras.Clear();
                    paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, db.DBID));
                    paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, pTable.TableCode.ToLower()));

                    reader = DBUtils.ExecuteReader(conn, cmd, CommandType.StoredProcedure, "dbo.P_Get_TableByCode", paras);

                    if (reader.Read())
                    {
                        oTable.OnPopulate(reader);
                    }

                    reader.Close();

                    if ((pTable.TableCode.ToLower().IndexOf("_pmt_") >= 0) || (pTable.TableCode.ToLower().IndexOf("pm_") >= 0))
                    {
                        pTable.IsPmt = true;
                    }

                    // 保存表信息

                    paras.Clear();
                    paras.Add(DBUtils.MakeInParam("DBID", SqlDbType.Int, db.DBID));
                    paras.Add(DBUtils.MakeInParam("TableCode", SqlDbType.NVarChar, 40, pTable.TableCode));
                    paras.Add(DBUtils.MakeInParam("TableName", SqlDbType.NVarChar, 40, pTable.TableName));
                    paras.Add(DBUtils.MakeInParam("Comment", SqlDbType.NVarChar, 400, pTable.Comment));
                    paras.Add(DBUtils.MakeInParam("IsPmt", SqlDbType.Bit, pTable.IsPmt));
                    paras.Add(DBUtils.MakeInParam("IsLog", SqlDbType.Bit, cbLog.Checked));

                    if (String.IsNullOrEmpty(oTable.TableCode))
                    {
                        paras.Add(DBUtils.MakeInParam("ACTION", SqlDbType.Int, DataProviderAction.Create));
                    }
                    else
                    {
                        paras.Add(DBUtils.MakeInParam("ACTION", SqlDbType.Int, DataProviderAction.Update));
                    }

                    DBUtils.ExecuteNonQuery(conn, cmd, CommandType.StoredProcedure, "dbo.P_Save_Table", paras);

                    SqlBaseProvider.DeleteColumn(conn, cmd, pTable, cbLog.Checked);

                    foreach (PdmColumn pColumn in pTable.Columns)
                    {
                        pColumn.DBID      = pTable.DBID;
                        pColumn.TableCode = pTable.TableCode;

                        SqlBaseProvider.SaveColumn(conn, cmd, pColumn);
                    }

                    if (String.IsNullOrEmpty(oTable.TableCode) || cbLog.Checked)
                    {
                        SqlBaseProvider.LogColumn(conn, cmd, pTable, true);
                    }

                    SqlBaseProvider.DeleteKey(conn, cmd, pTable, cbLog.Checked);

                    foreach (PdmKey pKey in pTable.Keys)
                    {
                        pKey.DBID      = pTable.DBID;
                        pKey.TableCode = pTable.TableCode;

                        SqlBaseProvider.SaveKey(conn, cmd, pKey);

                        foreach (PdmColumn pColumn in pKey.Columns)
                        {
                            SqlBaseProvider.SaveKeyColumn(conn, cmd, pKey, pColumn);
                        }
                    }

                    if (String.IsNullOrEmpty(oTable.TableCode) || cbLog.Checked)
                    {
                        SqlBaseProvider.LogKey(conn, cmd, pTable, true);
                    }

                    SqlBaseProvider.DeleteIndex(conn, cmd, pTable);

                    foreach (PdmIndex pIndex in pTable.Indexs)
                    {
                        pIndex.DBID      = pTable.DBID;
                        pIndex.TableCode = pTable.TableCode;

                        SqlBaseProvider.SaveIndex(conn, cmd, pIndex);

                        foreach (PdmColumn pColumn in pIndex.Columns)
                        {
                            SqlBaseProvider.SaveIndexColumn(conn, cmd, pIndex, pColumn);
                        }
                    }

                    if (String.IsNullOrEmpty(oTable.TableCode) || cbLog.Checked)
                    {
                        SqlBaseProvider.LogIndex(conn, cmd, pTable, true);
                    }
                }

                # endregion Save Table & Columns & Key  Index
Exemple #11
0
 private void initForm()
 {
     CtrlHelper.SetDropDownList(ddlDB, SqlBaseProvider.GetDBForCombox(Convert.ToInt32(DataBaseType.MySql)), DropAddType.New, DropAddFlag.Select, String.Empty, "DBName,DBID");
     ddlDB.SelectedValueChanged += new EventHandler(ddlDB_SelectedIndexChanged);
     pTable = new PdmTable();
 }