Beispiel #1
0
        public static void GetDataReader()
        {
            IDbAccess db = IDbFactory.CreateIDb(connStr, dbType);

            db.IsKeepConnect = true;
            IDataReader datareader = db.GetDataReader("select * from templjqfortest");

            while (datareader.Read())
            {
                Console.WriteLine(datareader.GetValue(0).ToString());
                Console.WriteLine(datareader.GetValue(1).ToString());
            }
            datareader.Dispose();
            db.Close();
        }
        public IEnumerable <DbColumnInfo> ShowColumns(string tableName)
        {
            var reader = dbAccess.GetDataReader($"PRAGMA table_info('{tableName}')");
            var lst    = new List <DbColumnInfo>();

            while (reader.Read())
            {
                //sqlite 的类型 显示如 INTEGER VARCHAR(50) 类型和长度应该分开
                var    dataType = reader.GetString(2);
                string dType    = dataType;
                int    dLength  = 0;

                if (dType.IndexOf("(") > 0)
                {
                    dType = dataType.Substring(0, dataType.IndexOf("("));
                    if (dataType.IndexOf(",") != -1)
                    {
                        dLength = dataType.Substring(dataType.IndexOf("(") + 1, dataType.IndexOf(",") - dataType.IndexOf("(") - 1).ToInt();
                    }
                    else
                    {
                        dLength = dataType.Substring(dataType.IndexOf("(") + 1, dataType.IndexOf(")") - dataType.IndexOf("(") - 1).ToInt();
                    }
                }

                lst.Add(new DbColumnInfo()
                {
                    ColumnName        = reader.GetString(1),
                    DataType          = dType,
                    Length            = dLength,
                    ColumnDescription = "",
                    DefaultValue      = reader.IsDBNull(4) ? "" : reader.GetString(4),
                    IsIdentity        = reader.IsDBNull(5) ? false : reader.GetBoolean(5),
                    IsPrimarykey      = reader.IsDBNull(5) ? false : reader.GetBoolean(5),
                    IsNullable        = reader.IsDBNull(3) ? false : reader.GetBoolean(3)
                });
            }

            return(lst);
        }
Beispiel #3
0
        public IEnumerable <DbColumnInfo> ShowColumns(string tableName)
        {
            var reader = dbAccess.GetDataReader($"describe {tableName};");
            var lst    = new List <DbColumnInfo>();

            while (reader.Read())
            {
                //mysql 的类型 显示如 int(11) varchar(50) 类型和长度应该分开
                var    dataType = reader.GetString(1);
                string dType    = dataType;
                int    dLength  = 0;

                if (dType.IndexOf("(") > 0)
                {
                    dType = dataType.Substring(0, dataType.IndexOf("("));
                    if (dataType.IndexOf(",") != -1)
                    {
                        dLength = dataType.Substring(dataType.IndexOf("(") + 1, dataType.IndexOf(",") - dataType.IndexOf("(") - 1).ToInt();
                    }
                    else
                    {
                        dLength = dataType.Substring(dataType.IndexOf("(") + 1, dataType.IndexOf(")") - dataType.IndexOf("(") - 1).ToInt();
                    }
                }

                lst.Add(new DbColumnInfo()
                {
                    ColumnName        = reader.GetString(0),
                    DataType          = dType,
                    Length            = dLength,
                    ColumnDescription = "",
                    DefaultValue      = reader.IsDBNull(4) ? "" : reader.GetString(4),
                    IsIdentity        = reader.IsDBNull(5) ? false : (reader.GetString(5) == "auto_increment"),
                    IsPrimarykey      = reader.IsDBNull(3) ? false : (reader.GetString(3) == "PRI"),
                    IsNullable        = reader.IsDBNull(2) ? false : (reader.GetString(2) == "YES")
                });
            }

            return(lst);
        }