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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 在 SQLite 中使用 Ruby 進行 SQL 查詢 > 原文: [http://zetcode.com/db/sqliteruby/queries/](http://zetcode.com/db/sqliteruby/queries/) 我們已經建立了到數據庫的連接。 現在我們要修改并從數據庫中獲取數據。 使用`SELECT`語句從數據庫中檢索數據。 在 SQLite Ruby 模塊中,首先我們使用`prepare`方法準備 SQL 語句。 SQL 字符串被發送到數據庫引擎,該引擎檢查語句的有效性,語法,并在某些數據庫中檢查執行某些查詢的用戶權限。 如果一切正常,則將語句對象返回到 Ruby 腳本。 下一步是對`execute`方法的調用。 該方法在數據庫內執行查詢。 檢索數據。 Ruby SQLite 模塊有幾種從數據庫表中獲取數據的方法。 準備并執行 SQL 語句后,我們可以遍歷返回的數據。 ## 取得數據 在第一個示例中,我們從`Cars`表中獲取一行。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.new "test.db" id = 1 stm = db.prepare "SELECT * FROM Cars WHERE Id=?" stm.bind_param 1, id rs = stm.execute row = rs.next puts row.join "\s" rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure stm.close if stm db.close if db end ``` 在示例中,我們執行所有步驟以從`Cars`表中獲取第一行。 ```ruby stm = db.prepare "SELECT * FROM Cars WHERE Id=?" ``` `SELECT`語句是使用`prepare`方法準備的。 返回一個語句對象。 ```ruby stm.bind_param 1, id ``` 參數綁定到語句中的占位符。 ```ruby rs = stm.execute ``` 該語句被執行。 返回`ResultSet`對象。 ```ruby row = rs.next ``` 我們從結果集中獲得下一行。 因為我們只想獲取一行,所以我們只調用一次`next`方法。 ```ruby puts row.join "\s" ``` 該行是一個 Ruby 數組。 使用`join`方法,將三個字段與一個空格字符連接起來以形成一行。 ```ruby $ ./fetch.rb 1 Audi 52642 ``` 這是示例的輸出。 在下面的示例中,我們將獲取五行。 我們將`next`方法放入`while`循環中。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.open "test.db" stm = db.prepare "SELECT * FROM Cars LIMIT 5" rs = stm.execute while (row = rs.next) do 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" ``` 這是用于提取 5 行的 SQL 語句。 ```ruby while (row = rs.next) do puts row.join "\s" end ``` `next`方法放在`while`循環中。 它返回結果集中的下一行。 如果沒有剩余的行,則該方法返回`nil`,而`while`循環終止。 我們可以使用`each`方法從結果集中獲取數據。 ```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`表中選擇五行。 ```ruby rs.each do |row| puts row.join "\s" end ``` 我們使用`each`方法來迭代結果集。 下一個示例顯示數據庫對象的`execute`方法。 這是一種方便的方法,可以節省一些擊鍵。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.open "test.db" rows = db.execute "SELECT * FROM Cars LIMIT 5" for row in rows do puts row.join "\s" end rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure db.close if db end ``` 該示例從`Cars`表中選擇并打印五行。 ```ruby rows = db.execute "SELECT * FROM Cars LIMIT 5" ``` 在這里,我們一步一步完成了兩項工作。 我們準備語句并執行它。 該方法以 Ruby 數組形式返回數據。 ```ruby for row in rows do puts row.join "\s" end ``` 我們從 Ruby 數組中打印數據。 到目前為止,我們已經看到以`ResultSet`或數組形式返回的數據。 下一個示例將以哈希數組的形式返回數據。 這樣,我們可以通過列名來標識字段值。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.open "test.db" db.results_as_hash = true ary = db.execute "SELECT * FROM Cars LIMIT 5" ary.each do |row| printf "%s %s %s\n", row['Id'], row['Name'], row['Price'] end rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure db.close if db end ``` 在示例中,我們通過字段的列名獲取字段。 ```ruby db.results_as_hash = true ``` 我們將`results_as_hash`屬性設置為`true`。 所有行將作為哈希對象返回,以列名作為鍵。 ```ruby ary.each do |row| printf "%s %s %s\n", row['Id'], row['Name'], row['Price'] end ``` 我們通過字段的列名獲取字段。 ```ruby $ ./fetch_hash.rb 1 Audi 52642 2 Mercedes 57127 3 Skoda 9000 4 Volvo 29000 5 Bentley 350000 ``` 我們看到示例的輸出。 ## 獲取行 Ruby SQLite 模塊有兩種方便的方法來檢索行。 在第一個示例中,我們將從表中獲得一行。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.open "test.db" row = db.get_first_row "SELECT * FROM Cars WHERE Id=1" puts row.join "\s" rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure db.close if db end ``` 我們獲得`Cars`表第一行的數據。 ```ruby row = db.get_first_row "SELECT * FROM Cars WHERE Id=1" ``` `get_first_row`方法獲取第一行,并丟棄所有其他行。 ```ruby puts row.join "\s" ``` 該行將打印到控制臺。 ```ruby $ ./fetchrow.rb 1 Audi 52642 ``` 在這里,我們看到`fetchrow.rb`示例的輸出。 在最后一個示例中,我們選擇一個值。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.open "test.db" val = db.get_first_value "SELECT Price FROM Cars WHERE Name='Bentley'" puts val rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure db.close if db end ``` 我們為特定的汽車選擇價格。 ```ruby val = db.get_first_value "SELECT Price FROM Cars WHERE Name='Bentley'" ``` 使用`get_first_value`方法,我們選擇一行的特定字段。 在我們的案例中,這是賓利汽車的價格。 ```ruby $ ./fetchvalue.rb 350000 ``` 這是輸出。 在 SQLite Ruby 教程的這一部分中,我們已經演示了如何使用各種方法從數據庫中獲取數據。
                  <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>

                              哎呀哎呀视频在线观看