<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 使用 C# 獲取 SQLite 元數據 > 原文: [http://zetcode.com/db/sqlitecsharp/meta/](http://zetcode.com/db/sqlitecsharp/meta/) 元數據是有關數據庫中數據的信息。 SQLite 中的元數據包含有關表和列的信息,我們在其中存儲數據。 受 SQL 語句影響的行數是元數據。 結果集中返回的行數和列數也屬于元數據。 可以使用`PRAGMA`命令獲取 SQLite 中的元數據。 SQLite 對象可能具有屬性,即元數據。 最后,我們還可以通過查詢 SQLite 系統`sqlite_master`表來獲取特定的元數據。 ```cs using System; using Mono.Data.Sqlite; public class Example { static void Main() { string cs = "URI=file:test.db"; string nrows = null; try { Console.Write("Enter rows to fetch: "); nrows = Console.ReadLine(); } catch (FormatException e) { Console.WriteLine(e.ToString()); } using (SqliteConnection con = new SqliteConnection(cs)) { con.Open(); using (SqliteCommand cmd = con.CreateCommand()) { cmd.CommandText = "SELECT * FROM Cars LIMIT @Id"; cmd.Prepare(); cmd.Parameters.AddWithValue("@Id", Int32.Parse(nrows)); int cols = 0; int rows = 0; using (SqliteDataReader rdr = cmd.ExecuteReader()) { cols = rdr.FieldCount; rows = 0; while (rdr.Read()) { rows++; } Console.WriteLine("The query fetched {0} rows", rows); Console.WriteLine("Each row has {0} cols", cols); } } con.Close(); } } } ``` 在上面的示例中,我們獲取查詢返回的行數和列數。 ```cs try { Console.Write("Enter rows to fetch: "); nrows = Console.ReadLine(); } catch (FormatException e) { Console.WriteLine(e.ToString()); } ``` 該示例要求在命令行上的行數。 ```cs cmd.CommandText = "SELECT * FROM Cars LIMIT @Id"; cmd.Prepare(); cmd.Parameters.AddWithValue("@Id", Int32.Parse(nrows)); ``` 我們將選定的行限制為提供給程序的數目。 ```cs cols = rdr.FieldCount; ``` 返回的列數可以很容易地從`SqliteDataReader`對象的`FieldCount`屬性獲得。 ```cs while (rdr.Read()) { rows++; } ``` 我們計算結果集中的行數。 ```cs $ mono fields_rows.exe Enter rows to fetch: 4 The query fetched 4 rows Each row has 3 cols ``` 輸出。 ## 列標題 接下來,我們將展示如何使用數據庫表中的數據打印列標題。 ```cs using System; using Mono.Data.Sqlite; public class Example { static void Main() { string cs = "URI=file:test.db"; using (SqliteConnection con = new SqliteConnection(cs)) { con.Open(); string stm = "SELECT * FROM Cars LIMIT 5"; using (SqliteCommand cmd = new SqliteCommand(stm, con)) { using (SqliteDataReader rdr = cmd.ExecuteReader()) { Console.WriteLine(String.Format("{0, -3} {1, -8} {2, 8}", rdr.GetName(0), rdr.GetName(1), rdr.GetName(2))); while (rdr.Read()) { Console.WriteLine(String.Format("{0, -3} {1, -8} {2, 8}", rdr.GetInt32(0), rdr.GetString(1), rdr.GetInt32(2))); } } } con.Close(); } } } ``` 在此程序中,我們從`Cars`表中選擇 5 行及其列名。 ```cs using (SqliteDataReader rdr = cmd.ExecuteReader()) ``` 我們創建一個`SqliteDataReader`對象。 ```cs Console.WriteLine(String.Format("{0, -3} {1, -8} {2, 8}", rdr.GetName(0), rdr.GetName(1), rdr.GetName(2))); ``` 我們使用閱讀器的`GetName()`方法獲得列的名稱。 `String.Format()`方法用于格式化數據。 ```cs while (rdr.Read()) { Console.WriteLine(String.Format("{0, -3} {1, -8} {2, 8}", rdr.GetInt32(0), rdr.GetString(1), rdr.GetInt32(2))); } ``` 我們將 SQL 語句返回的數據打印到終端。 ```cs $ dmcs columns.cs -r:Mono.Data.Sqlite.dll $ mono columns.exe Id Name Price 1 Audi 52642 2 Mercedes 57127 3 Skoda 9000 4 Volvo 29000 5 Bentley 350000 ``` 該程序的輸出。 ## 受影響的行 在下面的示例中,我們將發現特定的 SQL 命令已進行了多少更改。 ```cs using System; using Mono.Data.Sqlite; public class Example { static void Main() { string cs = "Data Source=:memory:"; using (SqliteConnection con = new SqliteConnection(cs)) { con.Open(); using (SqliteCommand cmd = new SqliteCommand(con)) { cmd.CommandText = "CREATE TABLE Friends(Id INT, Name TEXT)"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Friends VALUES(1, 'Tom')"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Friends VALUES(2, 'Jane')"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Friends VALUES(3, 'Rebekka')"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Friends VALUES(4, 'Lucy')"; cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Friends VALUES(5, 'Robert')"; cmd.ExecuteNonQuery(); cmd.CommandText = "DELETE FROM Friends WHERE Id IN (3, 4, 5)"; int n = cmd.ExecuteNonQuery(); Console.WriteLine("The statement has affected {0} rows", n); } con.Close(); } } } ``` 我們在內存中創建一個`Friends`表。 在最后一個 SQL 命令中,我們刪除三行。 `ExecuteNonQuery()`方法返回受最后一個 SQL 命令影響的行數。 ```cs cmd.CommandText = "DELETE FROM Friends WHERE Id IN (3, 4, 5)"; ``` 在此 SQL 語句中,我們刪除三行。 ```cs int n = cmd.ExecuteNonQuery(); ``` 我們找出上一條 SQL 語句完成的更改數量。 ```cs $ mono affected.exe The statement has affected 3 rows ``` 示例輸出。 ## 表架構 有`GetSchemaTable()`方法,它返回有關每一列的元數據。 它返回許多值,其中包括列名,列大小,基表名或列是否唯一。 ```cs using System; using System.Data; using Mono.Data.Sqlite; public class Example { static void Main() { string cs = "URI=file:test.db"; using(SqliteConnection con = new SqliteConnection(cs)) { con.Open(); string stm = "SELECT * FROM Cars LIMIT 3"; using (SqliteCommand cmd = new SqliteCommand(stm, con)) { using (SqliteDataReader rdr = cmd.ExecuteReader()) { DataTable schemaTable = rdr.GetSchemaTable(); foreach (DataRow row in schemaTable.Rows) { foreach (DataColumn col in schemaTable.Columns) Console.WriteLine(col.ColumnName + " = " + row[col]); Console.WriteLine(); } } } con.Close(); } } } ``` 該示例打印有關表列的大量元數據。 ```cs DataTable schemaTable = rdr.GetSchemaTable(); ``` 我們得到架構表。 ```cs foreach (DataRow row in schemaTable.Rows) { foreach (DataColumn col in schemaTable.Columns) Console.WriteLine(col.ColumnName + " = " + row[col]); Console.WriteLine(); } ``` 我們瀏覽保存元數據的模式表行,并將其打印到控制臺。 ```cs $ dmcs schema.cs -r:Mono.Data.Sqlite.dll -r:System.Data.dll $ mono schema.exe ColumnName = Id ColumnOrdinal = 0 ColumnSize = 8 NumericPrecision = 19 NumericScale = 0 IsUnique = True IsKey = True ... ``` 摘自示例輸出。 ## 表名 在與元數據有關的最后一個示例中,我們將列出`test.db`數據庫中的所有表。 ```cs using System; using Mono.Data.Sqlite; public class Example { static void Main() { string cs = "URI=file:test.db"; using (SqliteConnection con = new SqliteConnection(cs)) { con.Open(); string stm = @"SELECT name FROM sqlite_master WHERE type='table' ORDER BY name"; using (SqliteCommand cmd = new SqliteCommand(stm, con)) { using (SqliteDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { Console.WriteLine(rdr.GetString(0)); } } } con.Close(); } } } ``` 該代碼示例將所選數據庫中的所有可用表打印到終端。 ```cs string stm = @"SELECT name FROM sqlite_master WHERE type='table' ORDER BY name"; ``` 表名稱是從`sqlite_master`表中檢索的。 ```cs $ mono tables.exe Cars Friends Images ``` 這些是我們系統上的表。 在 SQLite C# 教程的這一部分中,我們使用了數據庫元數據。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看