示例#1
0
 public DataTable Query(IQuery query)
 {
     try
     {
         string sql = _emit.Query(query);
         _log.Debug(sql);
         return(_exe.ExecuteQuery(sql));
     }
     catch (Exception ex)
     {
         throw ex.CreateWrapException <ORMException>();
     }
 }
示例#2
0
文件: MetaQuery.cs 项目: rexzh/RexToy
        public IDatabaseMeta ReadMetaInfo()
        {
            AbstractDatabaseMeta meta = new DatabaseMeta(new TypeMap());

            string    sqlTable = "SELECT * FROM SysObjects WHERE xtype='u'";
            DataTable dtTable  = _exe.ExecuteQuery(sqlTable);

            foreach (DataRow dr in dtTable.Rows)
            {
                string name = (string)dr["NAME"];
                meta.AddTable(name);
            }

            string    sqlColumn = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS";
            DataTable dtColumn  = _exe.ExecuteQuery(sqlColumn);

            string sqlPK = "SELECT u.TABLE_NAME,u.COLUMN_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE u " +
                           "INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON t.CONSTRAINT_NAME = u.CONSTRAINT_NAME " +
                           "WHERE t.CONSTRAINT_TYPE = 'PRIMARY KEY'";
            DataTable dtPK = _exe.ExecuteQuery(sqlPK);

            foreach (DataRow dr in dtColumn.Rows)
            {
                string tblName  = (string)dr["table_name"];
                string colName  = (string)dr["column_name"];
                bool   nullable = (string)dr["is_nullable"] == "YES";
                string dbType   = (string)dr["data_type"];

                bool isPK = false;
                foreach (DataRow row in dtPK.Rows)
                {
                    if ((string)row["column_name"] == colName && (string)row["table_name"] == tblName)
                    {
                        isPK = true;
                        break;
                    }
                }

                meta.AddColumn(tblName, colName, dbType, nullable, isPK, 0);//Extend: length
            }
            meta.Build();

            return(meta);
        }
示例#3
0
        public IDatabaseMeta ReadMetaInfo()
        {
            AbstractDatabaseMeta meta = new DatabaseMeta(new TypeMap());

            var b = new MySqlConnectionStringBuilder(_exe.Connection.ConnectionString);


            var dtTable = _exe.ExecuteQuery(string.Format("SELECT * FROM information_schema.tables WHERE table_schema = '{0}'", b.Database));

            foreach (DataRow dr in dtTable.Rows)
            {
                string name = (string)dr["TABLE_NAME"];
                meta.AddTable(name);
            }

            DataTable dtColumn = _exe.ExecuteQuery(string.Format("SELECT * FROM information_schema.columns WHERE table_schema = '{0}'", b.Database));
            string    sqlPK    = "SELECT * FROM information_schema.columns WHERE table_schema = '{0}' AND column_key = 'PRI'";
            DataTable dtPK     = _exe.ExecuteQuery(string.Format(sqlPK, b.Database));

            foreach (DataRow dr in dtColumn.Rows)
            {
                string tblName  = (string)dr["TABLE_NAME"];
                string colName  = (string)dr["COLUMN_NAME"];
                bool   nullable = (string)dr["IS_NULLABLE"] != "N";
                string dbType   = (string)dr["DATA_TYPE"];

                bool isPK = false;
                foreach (DataRow row in dtPK.Rows)
                {
                    if ((string)row["COLUMN_NAME"] == colName)
                    {
                        isPK = true;
                        break;
                    }
                }

                meta.AddColumn(tblName, colName, dbType, nullable, isPK, 0);//Extend: length
            }

            meta.Build();
            return(meta);
        }
示例#4
0
        public IDatabaseMeta ReadMetaInfo()
        {
            AbstractDatabaseMeta meta = new DatabaseMeta(new TypeMap());

            var b = new OracleConnectionStringBuilder(_exe.Connection.ConnectionString);

            var dtTable = _exe.ExecuteQuery(string.Format("SELECT * FROM ALL_TABLES WHERE OWNER = '{0}'", b.UserID.ToUpper()));

            foreach (DataRow dr in dtTable.Rows)
            {
                string name = (string)dr["TABLE_NAME"];
                meta.AddTable(name);
            }

            DataTable dtColumn = _exe.ExecuteQuery(string.Format("SELECT * FROM ALL_TAB_COLUMNS WHERE OWNER = '{0}'", b.UserID.ToUpper()));
            string    sqlPK    = "SELECT * FROM user_cons_columns WHERE constraint_name IN (SELECT constraint_name FROM user_constraints WHERE Constraint_type='P') AND owner='{0}'";
            DataTable dtPK     = _exe.ExecuteQuery(string.Format(sqlPK, b.UserID.ToUpper()));

            foreach (DataRow dr in dtColumn.Rows)
            {
                string tblName  = (string)dr["TABLE_NAME"];
                string colName  = (string)dr["COLUMN_NAME"];
                bool   nullable = (string)dr["NULLABLE"] != "N";
                string dbType   = (string)dr["DATA_TYPE"];

                bool isPK = false;
                foreach (DataRow row in dtPK.Rows)
                {
                    if ((string)row["COLUMN_NAME"] == colName)
                    {
                        isPK = true;
                        break;
                    }
                }

                meta.AddColumn(tblName, colName, dbType, isPK, nullable, 0);//Extend: length
            }

            meta.Build();
            return(meta);
        }
示例#5
0
        public T FindByPK <T>(T pk)
        {
            DataTable dt = null;

            try
            {
                string sql = _emit.FindByPK(pk);
                _log.Debug(sql);
                dt = _exe.ExecuteQuery(sql);
            }
            catch (Exception ex)
            {
                throw ex.CreateWrapException <ORMException>();
            }

            Assertion.IsNotNull(dt, "Data table should be filled already.");

            switch (dt.Rows.Count)
            {
            case 0:
                return(default(T));

            case 1:
                try
                {
                    return(dt.Rows[0].MapToEntity <T>());
                }
                catch (Exception ex)
                {
                    throw ex.CreateWrapException <ORMException>();
                }

            default:
                ORMExceptionHelper.ThrowFindByPKResultNotUnique(typeof(T));
                break;
            }
            return(default(T));
        }
示例#6
0
 public DataTable ExecuteQuery(string sql)
 {
     return(_exe.ExecuteQuery(sql));
 }