Exemple #1
0
        // tableFields
        public override List <schema_field> table_fields(string table, string nameField = "")
        {
            List <schema_field> result = new List <schema_field>();

            bool alreadyFindAutoNumber = false; int i = 0;

            foreach (DataRow row in schemaColumns(table, nameField).Rows)
            {
                System.Data.OleDb.OleDbType type = (System.Data.OleDb.OleDbType)Enum.Parse(typeof(System.Data.OleDb.OleDbType), row["DATA_TYPE"].ToString());
                bool autonumber = false;
                if (!alreadyFindAutoNumber)
                {
                    if (type == System.Data.OleDb.OleDbType.BigInt || type == System.Data.OleDb.OleDbType.Integer ||
                        type == System.Data.OleDb.OleDbType.SmallInt || type == System.Data.OleDb.OleDbType.TinyInt ||
                        type == System.Data.OleDb.OleDbType.UnsignedBigInt || type == System.Data.OleDb.OleDbType.UnsignedInt ||
                        type == System.Data.OleDb.OleDbType.UnsignedSmallInt || type == System.Data.OleDb.OleDbType.UnsignedTinyInt)
                    {
                        autonumber = isAutoIncrement(table, row["COLUMN_NAME"].ToString());
                    }
                    if (autonumber)
                    {
                        alreadyFindAutoNumber = true;
                    }
                }

                result.Add(new schema_field(_dbType, row["COLUMN_NAME"].ToString(), type.ToString(), row["IS_NULLABLE"].ToString().ToUpper() == "FALSE" ? false : true
                                            , row["CHARACTER_MAXIMUM_LENGTH"] != DBNull.Value ? int.Parse(row["CHARACTER_MAXIMUM_LENGTH"].ToString()) : (int?)null
                                            , row["NUMERIC_PRECISION"] != DBNull.Value ? int.Parse(row["NUMERIC_PRECISION"].ToString()) : (int?)null
                                            , row["NUMERIC_SCALE"] != DBNull.Value ? int.Parse(row["NUMERIC_SCALE"].ToString()) : (int?)null
                                            , row["COLUMN_DEFAULT"] != DBNull.Value ? row["COLUMN_DEFAULT"].ToString() : "", autonumber, false, i++));
            }

            return(result);
        }
Exemple #2
0
 override public string ToString()
 {
     return(enumOleDbType.ToString());
 }
Exemple #3
0
 internal static Exception UninitializedParameters(int index, OleDbType dbtype)
 {
     return(ADP.InvalidOperation(SR.Format(SR.OleDb_UninitializedParameters, index.ToString(CultureInfo.InvariantCulture), dbtype.ToString())));
 }
        /// <summary>
        /// 从 Jet40( Access2000 ) 的数据库中加载数据结构信息
        /// </summary>
        /// <param name="myConn">数据库连接对象</param>
        /// <returns>加载的字段信息个数</returns>
        public int LoadFromAccess(OleDbConnection myConn)
        {
            intFillStyle = FillStyleConst.Access2000;
            int RecordCount = 0;

            myTables.Clear();
            string dbName = myConn.DataSource;

            if (dbName != null)
            {
                strName = System.IO.Path.GetFileName(dbName);
            }

            try
            {
                if (myConn.State != ConnectionState.Open)
                {
                    myConn.Open();
                }

                using (System.Data.DataTable myDataTable =
                           myConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Columns, null))
                {
                    foreach (System.Data.DataRow myRow in myDataTable.Rows)
                    {
                        string strTable = Convert.ToString(myRow["TABLE_NAME"]);
                        if (!strTable.StartsWith("MSys"))
                        {
                            TableInfo myTable = myTables[strTable];
                            if (myTable == null)
                            {
                                myTable      = new TableInfo();
                                myTable.Name = strTable;
                                myTables.Add(myTable);
                            }
                            FieldInfo myField = new FieldInfo();
                            myTable.Fields.Add(myField);
                            myField.Name     = Convert.ToString(myRow["COLUMN_NAME"]);
                            myField.Nullable = Convert.ToBoolean(myRow["IS_NULLABLE"]);
                            System.Data.OleDb.OleDbType intType = (System.Data.OleDb.OleDbType)
                                                                  Convert.ToInt32(myRow["DATA_TYPE"]);
                            if (System.DBNull.Value.Equals(myRow["DESCRIPTION"]) == false)
                            {
                                myField.Remark = Convert.ToString(myRow["DESCRIPTION"]);
                            }
                            if (intType == System.Data.OleDb.OleDbType.WChar)
                            {
                                myField.FieldType = "Char";
                            }
                            else
                            {
                                myField.FieldType = intType.ToString();
                            }
                            myField.FieldWidth = Convert.ToString(myRow["CHARACTER_MAXIMUM_LENGTH"]);
                            RecordCount++;
                        }
                    } //foreach
                }     //using
                using (System.Data.DataTable myDataTable =
                           myConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Indexes, null))
                {
                    foreach (System.Data.DataRow myRow in myDataTable.Rows)
                    {
                        string    strTable = Convert.ToString(myRow["TABLE_NAME"]);
                        TableInfo myTable  = myTables[strTable];
                        if (myTable != null)
                        {
                            FieldInfo myField = myTable.Fields[Convert.ToString(myRow["COLUMN_NAME"])];
                            if (myField != null)
                            {
                                myField.Indexed    = true;
                                myField.PrimaryKey = (Convert.ToBoolean(myRow["PRIMARY_KEY"]));
                            }
                        }
                    } //foreach
                }     //using
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                if (myConn.State == ConnectionState.Open)
                {
                    myConn.Close();
                }
                myConn.Dispose();
            }
            return(RecordCount);
        }//public int LoadFromAccess2000( OleDbConnection myConn )
 internal static Exception UninitializedParameters(int index, OleDbType dbtype)
 {
     return(ADP.InvalidOperation(Res.GetString("OleDb_UninitializedParameters", new object[] { index.ToString(CultureInfo.InvariantCulture), dbtype.ToString() })));
 }