<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # ADO.NET 數據集 > 原文: [http://zetcode.com/db/sqlitecsharp/dataset/](http://zetcode.com/db/sqlitecsharp/dataset/) ADO.NET 架構由兩個主要部分組成。 .NET 數據供應器和`DataSet`。 數據提供者是已明確設計用于數據處理和快速訪問數據的組件。 創建`DataSet`的目的是為了獨立于任何數據源進行數據訪問。 它可以與多個不同的數據源,XML 數據一起使用,或者用于管理應用本地的數據。 `DataSet`是數據庫表中數據的副本以及數據之間的關系。 它在內存中創建,并在需要對數據進行大量處理或將數據表綁定到 Winforms 控件時使用。 處理完成后,更改將被寫入數據源。 `DataSet`是斷開的關系結構。 這意味著在`DataSet`對象的整個生命周期中不必打開基礎連接。 這使我們能夠有效地使用可用的數據庫連接。 可以通過多種方式填充數據集。 我們可以使用`SqliteDataAdapter`類的`Fill()`方法。 我們可以以編程方式創建`DataTable`,`DataColumn`和`DataRow`對象。 可以從 XML 文檔或流中讀取數據。 `SqliteDataAdapter`是數據集和數據源之間的中介。 它填充`DataSet`并解析數據源的更新。 `DataTable`是內存中數據庫表的表示。 可以將一個或多個數據表添加到數據集。 對`DataSet`所做的更改由`SqliteCommandBuilder`類保存到數據源。 `DataGridView`控件提供了用于顯示數據的可自定義表。 它允許通過使用屬性來定制單元格,行,列和邊框。 我們可以使用此控件來顯示帶有或不帶有基礎數據源的數據。 ## 創建一個數據表 在第一個示例中,我們將使用`DataTable`類。 ```cs sqlite> CREATE TABLE Friends2(Id INTEGER PRIMARY KEY, Name TEXT); ``` 在這種情況下,必須先創建表,然后才能將任何數據保存到表中。 ```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(); DataTable table = new DataTable("Friends2"); DataColumn column; DataRow row; column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "Id"; table.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "Name"; table.Columns.Add(column); row = table.NewRow(); row["Id"] = 1; row["Name"] = "Jane"; table.Rows.Add(row); row = table.NewRow(); row["Id"] = 2; row["Name"] = "Lucy"; table.Rows.Add(row); row = table.NewRow(); row["Id"] = 3; row["Name"] = "Thomas"; table.Rows.Add(row); string sql = "SELECT * FROM Friends2"; using (SqliteDataAdapter da = new SqliteDataAdapter(sql, con)) { using (new SqliteCommandBuilder(da)) { da.Fill(table); da.Update(table); } } con.Close(); } } } ``` 在示例中,我們創建一個新的`DataTable`對象。 我們在表中添加兩列和三行。 然后,我們將數據保存在新的`Friends2`數據庫表中。 ```cs DataTable table = new DataTable("Friends2"); ``` 創建一個新的`DataTable`對象。 ```cs column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "Id"; table.Columns.Add(column); ``` 新列將添加到表中。 我們為列提供數據類型和名稱。 可通過`Columns`屬性訪問`DataTable`的列。 ```cs row = table.NewRow(); row["Id"] = 1; row["Name"] = "Jane"; table.Rows.Add(row); ``` 在表中添加一行。 可以通過`Rows`屬性訪問`DataTable`的行。 ```cs string sql = "SELECT * FROM Friends2"; using (SqliteDataAdapter da = new SqliteDataAdapter(sql, con)) ``` `SqliteDataAdapter`是數據庫表及其在內存中的表示之間的中介。 ```cs using (new SqliteCommandBuilder(da)) ``` `SqliteCommandBuilder`包裝數據適配器。 它只需要實例化。 我們稍后不會直接使用它。 ```cs da.Fill(table); da.Update(table); ``` 數據適配器中填充了表中的數據。 `Update`方法將數據插入數據庫。 ## 保存 XML 數據 來自`DataTable`的數據可以輕松保存在 XML 文件中。 此任務有`WriteXml()`方法。 ```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 5"; using (SqliteDataAdapter da = new SqliteDataAdapter(stm, con)) { DataSet ds = new DataSet(); da.Fill(ds, "Cars"); DataTable dt = ds.Tables["Cars"]; dt.WriteXml("cars.xml"); foreach (DataRow row in dt.Rows) { foreach (DataColumn col in dt.Columns) { Console.Write(row[col] + " "); } Console.WriteLine(); } } con.Close(); } } } ``` 我們從`Cars`表中打印 5 輛汽車。 我們還將它們保存在 XML 文件中。 ```cs using (SqliteDataAdapter da = new SqliteDataAdapter(stm, con)) ``` 創建一個`SqliteDataAdapter`對象。 它以 SQL 語句和連接為參數。 SQL 語句將由`SqliteDataAdapter`用于檢索和傳遞數據。 ```cs DataSet ds = new DataSet(); da.Fill(ds, "Cars"); ``` 我們創建`DataSet`對象。 `Fill()`方法使用數據適配器從數據源檢索數據。 它創建一個名為`Cars`的新`DataTable`,并用檢索到的數據填充它。 ```cs DataTable dt = ds.Tables["Cars"]; ``` `Tables`屬性為我們提供了`DataSet`中包含的數據表的集合。 從該集合中檢索`Cars` `DataTable`。 ```cs dt.WriteXml("cars.xml"); ``` 我們將數據表中的數據寫入 XML 文件。 ```cs foreach (DataRow row in dt.Rows) { foreach (DataColumn col in dt.Columns) { Console.Write(row[col] + " "); } Console.WriteLine(); } ``` 我們將`Cars`表的內容顯示到終端。 為了遍歷數據,我們利用了`DataTable`對象的行和列。 ```cs $ dmcs savexml.cs -r:Mono.Data.Sqlite.dll -r:System.Data.dll ``` 為了編譯該示例,我們添加了一個附加的 DLL 文件`System.Data.dll`。 ## 加載 XML 數據 我們已經展示了如何將數據保存在 XML 文件中。 現在我們將展示如何從 XML 文件加載數據。 ```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(); DataSet ds = new DataSet(); ds.ReadXml("cars.xml"); DataTable dt = ds.Tables["Cars"]; foreach (DataRow row in dt.Rows) { foreach (DataColumn col in dt.Columns) { Console.Write(row[col] + " "); } Console.WriteLine(); } con.Close(); } } } ``` 我們將`cars.xml`文件的內容讀入`DataSet`。 我們將所有行打印到終端。 ```cs DataSet ds = new DataSet(); ``` 創建一個`DataSet`對象。 ```cs ds.ReadXml("cars.xml"); ``` 來自`cars.xml`的數據被讀入數據集。 ```cs DataTable dt = ds.Tables["Cars"]; ``` 將數據讀入數據集后,將創建一個新的`DataTable`。 我們得到這張表。 ```cs foreach (DataRow row in dt.Rows) { foreach (DataColumn col in dt.Columns) { Console.Write(row[col] + " "); } Console.WriteLine(); } ``` 我們打印數據表的所有行。 ```cs $ mono loadxml.exe 1 Audi 52642 2 Mercedes 57127 3 Skoda 9000 4 Volvo 29000 5 Bentley 350000 ``` 運行示例。 ## `DataGridView` 在下一個示例中,我們將表綁定到 Winforms `DataGridView`控件。 ```cs using System; using System.Windows.Forms; using System.Drawing; using System.Data; using Mono.Data.Sqlite; class MForm : Form { private DataGridView dgv = null; private DataSet ds = null; public MForm() { this.Text = "DataGridView"; this.Size = new Size(450, 350); this.InitUI(); this.InitData(); this.CenterToScreen(); } void InitUI() { dgv = new DataGridView(); dgv.Location = new Point(8, 0); dgv.Size = new Size(350, 300); dgv.TabIndex = 0; dgv.Parent = this; } void InitData() { string cs = "URI=file:test.db"; string stm = "SELECT * FROM Cars"; using (SqliteConnection con = new SqliteConnection(cs)) { con.Open(); ds = new DataSet(); using (SqliteDataAdapter da = new SqliteDataAdapter(stm, con)) { da.Fill(ds, "Cars"); dgv.DataSource = ds.Tables["Cars"]; } con.Close(); } } } class MApplication { public static void Main() { Application.Run(new MForm()); } } ``` 在本示例中,我們將`Cars`表綁定到 Winforms `DataGridView`控件。 ```cs using System.Windows.Forms; using System.Drawing; ``` 這兩個名稱空間用于 GUI。 ```cs this.InitUI(); this.InitData(); ``` 在`InitUI()`方法內部,我們構建了用戶界面。 在`InitData()`方法中,我們連接到數據庫,將數據檢索到`DataSet`中并將其綁定到`DataGrid`控件。 ```cs dgv = new DataGridView(); ``` `DataGridView`控件已創建。 ```cs string stm = "SELECT * FROM Cars"; ``` 我們將在`DataGridView`控件中顯示`Cars`表中的數據。 ```cs dgv.DataSource = ds.Tables["Cars"]; ``` 我們將`DataGridView`控件的`DataSource`屬性綁定到所選表。 ```cs $ dmcs datagridview.cs -r:System.Data.dll -r:System.Drawing.dll -r:Mono.Data.Sqlite.dll -r:System.Windows.Forms.dll ``` 要編譯該示例,我們必須包含其他 DLL。 用于 SQLite 數據供應器,Winforms,繪圖和數據的 DLL。 ![DataGridView](https://img.kancloud.cn/e0/85/e085ab19d6676c39ac741d02eff58b42_444x348.jpg) 圖:`DataGridView` 在 SQLite C# 教程的這一部分中,我們使用了`DataSet`,`DataTable`,`SqliteDataAdapter`,`SqliteCommandBuilder`和`DataGridView`類。
                  <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>

                              哎呀哎呀视频在线观看