zoukankan      html  css  js  c++  java
  • [sqlite] 判断表、视图是否存在及常用C#操作语句

    1,判断表是否存在:

    SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "Dom" 

    结果如下:

    2.判断视图是否存在:

    SELECT count(*) FROM sqlite_master WHERE type = "view" AND name = "myView"

    结果如下:


    type='view'判断视图.结果>0就是有这个视图 


    另附C#操作的常用代码:

        DataTable table = conn.GetSchema("TABLES");
        if (table != null && table.Rows.Count > 0)
           {
               string tableName = table.Rows[0]["TABLE_NAME"].ToString();
               DataTable schemaTable = GetReaderSchema(tableName, conn);
           }

      

        private DataTable GetReaderSchema(string tableName, SQLiteConnection connection)
        {
            DataTable schemaTable = null;
            IDbCommand cmd = new SQLiteCommand();
            cmd.CommandText = string.Format("select * from [{0}]", tableName);
            cmd.Connection = connection;
            using (IDataReader reader = cmd.ExecuteReader(CommandBehavior.KeyInfo | CommandBehavior.SchemaOnly))
            {
                schemaTable = reader.GetSchemaTable();
            }
            return schemaTable;
        }
     
      
    

      

        foreach (DataRow dr in schemaTable.Rows)
        {
            ColumnInfo info = new ColumnInfo();
            info.Name = new NameElement(dr["ColumnName"].ToString());
            info.Ordinal = Convert.ToInt32(dr["ColumnOrdinal"].ToString());
            info.AllowDBNull = (bool)dr["AllowDBNull"];
            info.MaxLength = Convert.ToInt32(dr["ColumnSize"].ToString());
            info.DataTypeId = Convert.ToInt32(dr["ProviderType"].ToString());
            info.DataType = dr["DataTypeName"].ToString().Trim();
            info.AutoIncrement = (bool)dr["IsAutoIncrement"];
            info.IsPrimaryKey = (bool)dr["IsKey"];
            info.Unique = (bool)dr["IsUnique"];
            info.IsReadOnly = (bool)dr["IsReadOnly"];
            string netType = dr["DataType"].ToString();
     
            list.Add(info.Name.Name.ToString(), info);
        }
    

      

  • 相关阅读:
    CPP Info Memo part3
    在Google搜索结果显示原始链接(转自 月光博客)
    libc 之 locales
    Git 分支管理与本地 repository 创建
    py2exe issue: ImportError: No module named _fontdata_enc_winansi (http://stackoverflow.com/)
    CPP Info Memo (Part 1)
    CPP Info Memo part2
    HOWTO: Increase write speed by 'aligning' FAT32(通过对齐 FAT32 提高U盘访问速度, 转载)
    (转载)Gentoo中文man乱码
    如何选择开源许可证?(转载)
  • 原文地址:https://www.cnblogs.com/huxiaolin/p/4157546.html
Copyright © 2011-2022 走看看