コード例 #1
0
        private void GetColumns(Model.Database db, Model.Table table)
        {
            // 对每个表取字段属性
            DataSet dsColumns = dbHelper.ExecuteDataset(CommandType.Text,
                                                        string.Format("select * from COLUMNS where TABLE_SCHEMA='{0}' and TABLE_NAME='{1}'", db.Name, table.Name),
                                                        null);

            foreach (DataRow rField in dsColumns.Tables[0].Rows)
            {
                Model.Field field = new Model.Field();
                field.IsId         = rField["EXTRA"].ToString().ToLower() == "auto_increment";
                field.IsKey        = rField["COLUMN_KEY"].ToString().ToLower() == "pri";
                field.AllowNull    = rField["IS_NULLABLE"].ToString().ToLower() == "yes";
                field.FieldType    = SchemaHelper.GetString(rField["DATA_TYPE"]);
                field.DefaultValue = SchemaHelper.GetString(rField["COLUMN_DEFAULT"]);
                field.Descn        = SchemaHelper.GetString(rField["COLUMN_COMMENT"]);
                field.Length       = SchemaHelper.GetLong(rField["CHARACTER_MAXIMUM_LENGTH"]);
                field.Name         = SchemaHelper.GetString(rField["COLUMN_NAME"]);
                field.Pos          = SchemaHelper.GetInt(rField["ORDINAL_POSITION"]);
                table.AddField(field);
            }
        }
コード例 #2
0
ファイル: AccessSchema.cs プロジェクト: LDT2016/SocanCode6
        private Model.Field GetField(string connectionString, string tbName, DataRow r)
        {
            Model.Field model = new Model.Field();
            model.AllowNull    = SchemaHelper.GetBool(r["IS_NULLABLE"]);
            model.DefaultValue = SchemaHelper.GetString(r["COLUMN_DEFAULT"]);
            model.Descn        = SchemaHelper.GetString(r["DESCRIPTION"]);
            model.Name         = SchemaHelper.GetString(r["COLUMN_NAME"]);
            model.Position     = SchemaHelper.GetInt(r["ORDINAL_POSITION"]);
            model.Size         = SchemaHelper.GetInt(r["CHARACTER_OCTET_LENGTH"]);
            model.SetDbType(Model.DatabaseTypes.Access, SchemaHelper.GetString(r["DATA_TYPE"]));
            model.Length       = SchemaHelper.GetInt(r["CHARACTER_MAXIMUM_LENGTH"]);
            model.IsIdentifier = SchemaHelper.GetInt(r["COLUMN_FLAGS"]) == 90 && SchemaHelper.GetInt(r["DATA_TYPE"]) == 3;

            DataTable dtPrimanyKey = GetDbSchema(connectionString, OleDbSchemaGuid.Primary_Keys, null);

            foreach (DataRow rp in dtPrimanyKey.Rows)
            {
                if (rp[2].ToString() == tbName && rp[3].ToString() == model.Name)
                {
                    model.IsKeyField = true;
                }
            }
            return(model);
        }
コード例 #3
0
        private void GetColumns(Table table)
        {
            DataTable schema;

            using (SQLiteConnection connection = new SQLiteConnection(helper.ConnectionString))
            {
                connection.Open();
                schema = connection.GetSchema("COLUMNS");
            }

            foreach (DataRow r in schema.Select(string.Format("TABLE_NAME = '{0}'", table)))
            {
                Model.Field model = new Model.Field();

                model.AllowNull = Convert.ToBoolean(r["IS_NULLABLE"]);
                model.Position  = Convert.ToInt32(r["ORDINAL_POSITION"]);
                model.Name      = r["COLUMN_NAME"].ToString();
                model.SetDbType(Model.DatabaseTypes.SQLite, SchemaHelper.GetString(r["DATA_TYPE"]));
                model.DefaultValue = r["COLUMN_DEFAULT"].ToString();
                model.Descn        = SchemaHelper.GetString(r["DESCRIPTION"]);
                model.Size         = Convert.ToInt32((r["CHARACTER_MAXIMUM_LENGTH"] == DBNull.Value) ? 0 : r["CHARACTER_MAXIMUM_LENGTH"]);
                model.Length       = SchemaHelper.GetInt(r["CHARACTER_MAXIMUM_LENGTH"]);
                model.IsIdentifier = SchemaHelper.GetBool(r["AUTOINCREMENT"]);

                if (Convert.ToBoolean(r["PRIMARY_KEY"]))
                {
                    model.IsKeyField = true;
                }
                else
                {
                    model.IsKeyField = false;
                }

                table.AddField(model);
            }
        }