// 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); }
override public string ToString() { return(enumOleDbType.ToString()); }
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() }))); }