<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 連接到 SQLite 數據庫 > 原文: [http://zetcode.com/db/sqliteruby/connect/](http://zetcode.com/db/sqliteruby/connect/) SQLite Ruby 教程的這一部分將向您展示如何連接到數據庫以及如何對數據庫做一些簡單的事情。 ## 開始之前 SQLite 附帶`sqlite3`命令行工具。 它可用于對數據庫發出 SQL 命令。 現在,我們將使用`sqlite3`命令行工具創建一個新數據庫。 ```ruby $ sqlite3 test.db SQLite version 3.6.22 Enter ".help" for instructions Enter SQL statements terminated with a ";" ``` 我們為`sqlite3`工具提供了一個參數。 `test.db`是數據庫名稱。 它是我們磁盤上的單個文件。 如果存在,則將其打開。 如果不是,則創建它。 ```ruby sqlite> .tables sqlite> .exit $ ls test.db ``` `.tables`命令提供了`test.db`數據庫中的表列表。 當前沒有表。 `.exit`命令終止`sqlite3`命令行工具的交互式會話。 `ls` Unix 命令顯示當前工作目錄的內容。 我們可以看到`test.db`文件。 所有數據將存儲在該單個文件中。 `sqlite-ruby`接口用于使用 Ruby 語言與 SQLite 數據庫進行交互。 ```ruby $ sudo apt-get install libsqlite3-ruby ``` 上面的命令將模塊安裝在基于 Debian 的 Linux 系統上。 第一步是創建一個`Database`對象。 `Database`類封裝了到 SQLite 數據庫的單個連接。 使用`close`方法關閉數據庫對象。 ```ruby SQLite3::Database.new dbname SQLite3::Database.open dbname ``` `new`方法創建一個新的數據庫對象,該對象將打開給定的`dbname`文件。 如果該文件不存在,則將盡可能創建它。 默認情況下,新數據庫將結果行作為數組返回。 `open`方法打開給定文件中包含的數據庫。 ```ruby SQLite3::Database.new ":memory:" ``` 如果我們為文件名提供特殊字符串`:memory:`,則可以創建一個內存數據庫。 ## 數據來源 創建本教程時,請參考 [sqlite-ruby.rubyforge.org](http://sqlite-ruby.rubyforge.org/) 網站。 ## 版本 在第一個代碼示例中,我們將獲得 SQLite 數據庫的版本。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.new ":memory:" puts db.get_first_value 'SELECT SQLITE_VERSION()' rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure db.close if db end ``` 在上面的 Ruby 腳本中,我們創建了一個新的內存數據庫。 我們執行一條 SQL 語句,該語句返回 SQLite 數據庫的版本。 ```ruby require 'sqlite3' ``` 我們使用`sqlite3` Ruby 模塊連接到 SQLite 數據庫。 ```ruby db = SQLite3::Database.new ":memory:" ``` 我們創建一個新的數據庫對象。 `Database`類封裝了到 SQLite 數據庫的單個連接。 數據庫在內存中創建。 因此它不是永久的。 ```ruby puts db.get_first_value 'SELECT SQLITE_VERSION()' ``` 我們將`db`對象的`get_first_value`方法調用。 它執行 SQL 語句并獲得結果集第一行的第一個值。 ```ruby rescue SQLite3::Exception => e puts "Exception occurred" puts e ``` 我們檢查錯誤。 這很重要,因為使用數據庫容易出錯。 ```ruby ensure db.close if db end ``` 最后,我們釋放資源。 ```ruby $ ./version.rb 3.7.7 ``` 輸出可能類似于上面。 ## 插入數據 我們將創建一個`Cars`表并在其中插入幾行。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.open "test.db" db.execute "CREATE TABLE IF NOT EXISTS Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INT)" db.execute "INSERT INTO Cars VALUES(1,'Audi',52642)" db.execute "INSERT INTO Cars VALUES(2,'Mercedes',57127)" db.execute "INSERT INTO Cars VALUES(3,'Skoda',9000)" db.execute "INSERT INTO Cars VALUES(4,'Volvo',29000)" db.execute "INSERT INTO Cars VALUES(5,'Bentley',350000)" db.execute "INSERT INTO Cars VALUES(6,'Citroen',21000)" db.execute "INSERT INTO Cars VALUES(7,'Hummer',41400)" db.execute "INSERT INTO Cars VALUES(8,'Volkswagen',21600)" rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure db.close if db end ``` 上面的腳本創建一個`Cars`表,并將 8 行插入到該表中。 ```ruby db = SQLite3::Database.open "test.db" ``` 我們連接到`test.db`數據庫。 ```ruby db.execute "CREATE TABLE IF NOT EXISTS Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INT)" ``` `execute`方法執行給定的 SQL 語句。 如果尚不存在新的`Cars`表,則會創建該表。 ```ruby db.execute "INSERT INTO Cars VALUES(1,'Audi',52642)" db.execute "INSERT INTO Cars VALUES(2,'Mercedes',57127)" ``` 這兩行將兩輛車插入表。 請注意,默認情況下,我們處于自動提交模式,其中對表的所有更改均立即生效。 ```ruby sqlite> .mode column sqlite> .headers on ``` 我們使用`sqlite3`工具驗證寫入的數據。 首先,我們修改數據在控制臺中的顯示方式。 我們使用列模式并打開標題。 ```ruby sqlite> SELECT * FROM Cars; Id Name Price ---------- ---------- ---------- 1 Audi 52642 2 Mercedes 57127 3 Skoda 9000 4 Volvo 29000 5 Bentley 350000 6 Citroen 21000 7 Hummer 41400 8 Volkswagen 21600 ``` 這是我們已寫入`Cars`表的數據。 ## 最后插入的行 ID 有時我們需要確定最后插入的行的 ID。 我們使用`last_insert_row_id`方法找到它。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.new ":memory:" db.execute "CREATE TABLE Friends(Id INTEGER PRIMARY KEY, Name TEXT)" db.execute "INSERT INTO Friends(Name) VALUES ('Tom')" db.execute "INSERT INTO Friends(Name) VALUES ('Rebecca')" db.execute "INSERT INTO Friends(Name) VALUES ('Jim')" db.execute "INSERT INTO Friends(Name) VALUES ('Robert')" db.execute "INSERT INTO Friends(Name) VALUES ('Julian')" id = db.last_insert_row_id puts "The last id of the inserted row is #{id}" rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure db.close if db end ``` 我們在內存中創建一個`Friends`表。 `Id`自動遞增。 ```ruby db.execute "CREATE TABLE Friends(Id INTEGER PRIMARY KEY, Name TEXT)" ``` 在 SQLite 中,`INTEGER PRIMARY KEY`列自動增加。 還有一個`AUTOINCREMENT`關鍵字。 在`INTEGER PRIMARY KEY AUTOINCREMENT`中使用時,會使用稍微不同的算法來創建`Id`。 ```ruby db.execute "INSERT INTO Friends(Name) VALUES ('Tom')" db.execute "INSERT INTO Friends(Name) VALUES ('Rebecca')" db.execute "INSERT INTO Friends(Name) VALUES ('Jim')" db.execute "INSERT INTO Friends(Name) VALUES ('Robert')" db.execute "INSERT INTO Friends(Name) VALUES ('Julian')" ``` 這五個 SQL 語句將五行插入到`Friends`表中。 ```ruby id = db.last_insert_row_id ``` 使用`last_insert_row_id`方法,我們獲得最后插入的行`Id`。 ```ruby $ ./last_rowid.rb The last id of the inserted row is 5 ``` 我們看到了腳本的輸出。 ## 取得數據 在本章的最后一個示例中,我們獲取一些數據。 有關數據獲取的更多信息將在“查詢”一章中進行討論。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.open "test.db" stm = db.prepare "SELECT * FROM Cars LIMIT 5" rs = stm.execute rs.each do |row| puts row.join "\s" end rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure stm.close if stm db.close if db end ``` 在示例中,我們從`Cars`表中獲取 5 行。 ```ruby stm = db.prepare "SELECT * FROM Cars LIMIT 5" rs = stm.execute ``` 我們準備要使用`prepare`方法執行的 SQL 語句。 該方法返回一個語句對象。 然后,使用`execute`方法執行 SQL 語句。 它返回一個結果集。 `ResutlSet`對象是查詢返回的數據上的簡單光標。 ```ruby rs.each do |row| puts row.join "\s" end ``` 使用`each`方法,我們遍歷結果集中的數據。 在每個循環中,它返回一行。 該行是一個字段數組。 這些字段用空白連接起來形成一條線。 ```ruby $ ./fetch.rb 1 Audi 52642 2 Mercedes 57127 3 Skoda 9000 4 Volvo 29000 5 Bentley 350000 ``` 這是`fetch.rb`腳本的輸出。 在 SQLite Ruby 教程的這一章中,我們展示了如何建立與 SQLite 數據庫的數據庫連接。 我們已經解釋了對數據庫進行一些基本工作的腳本。
                  <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>

                              哎呀哎呀视频在线观看