Contents

高效查詢數據庫的 VB.NET SQL 示例

VB.NET 提供了一種簡化的數據庫操作方法和強大的框架。利用它的強大功能,您可以快速、輕鬆地獲取相關信息。

檢查演示用於執行 SQL 查詢的 VB.NET 實現的說明性應用程序,並發現優化數據採集的策略,使其既高效又資源豐富。

設置本地 SQL Server

首先,建議建立一個 SQL 服務器,以便按順序檢查每個組件。後續插圖顯示基於 Windows 的平台;然而,對於那些使用 Linux 等替代操作系統並使用不同 SQL 服務器的人來說,沒有理由擔心,因為基本原則將繼續存在。

由於其簡單的性質並且不需要任何形式的設置或配置,SQLite 成為數據庫管理系統新手的理想選擇。

要啟動該過程,請在文件系統上建立一個新目錄,然後訪問命令提示符界面並導航到終端內的指定位置。利用後續步驟執行指令,生成使用 Visual Basic.NET 作為主要開發編碼語言的全新.NET 項目:

 dotnet new console -lang VB -o MyVBApp

為了將 SQLite 庫合併到 Visual Basic.NET 項目中,您應該使用 NuGet,它是.NET 平台廣泛使用的包管理系統。為此,請在終端或集成開發環境 (IDE) 中執行以下命令:

 dotnet add package System.Data.SQLite

一旦合併了 SQLite,建立本地數據庫就變成了一個簡單的過程。

說明性實例的完整源代碼存檔在該項目的綜合數字存儲庫中,可在稱為 GitHub 存儲庫的協作平台上訪問和檢查。

請獲取“InitializeDatabase.vb”文件,該文件位於我們項目的存儲庫中。該特定文件提供了建立數據庫所需的配置。仔細閱讀其內容,您會發現一系列用戶配置文件和相關的地理數據,可以作為您自己的有用模板。

請通過合併建議的更改、保留原始含義並保持正式語氣來修改提供的代碼片段。

 Module Program
    Sub Main(args As String())
        DatabaseInitializer.InitializeDb()
    End Sub
End Module

在執行這個特定的軟件應用程序時,我們應該觀察到名為“mydatabase.db”的不同文件的生成。該文件代表一個基本的關係數據庫,作為後續演示的基礎。

/bc/images/database-create-with-visual-basic.jpg

在 VB.NET 中使用 SQL 建立數據庫連接

為了促進 SQLite 在 Visual Basic.NET 應用程序中的集成,必須簡單輕鬆地處理該過程。因此,應該導航到 Program.vb 文件並刪除其當前內容。這個特定的文件代表了該項目的基本方面,作為其核心組件。

可以通過在代碼中使用以下語句來連接到“mydatabase.db”數據庫文件:

 Dim connectionString As String = "Data Source=mydatabase.db;Version=3;"

數據源用於指定存放數據庫的特定文件,如果這樣的文件尚不存在,SQLite 將在啟動與系統的連接時自動生成一個文件。

一旦定義了“SQLiteConnection”對象,在與數據庫連接交互時使用“Using”語句就非常重要,以防止執行過程中可能出現的任何可能的資源洩漏或死鎖問題。

 Using conn As New SQLiteConnection(connectionString)
    conn.Open()

    ' Database operations go here
End Using

Utilizing 語句保證連接將在其操作結束時無縫終止。

Program.vb 文件的最終版本可能類似於以下格式:

 Imports System
Imports System.Data.SQLite

Module Program
    Sub Main(args As String())
        Dim connectionString As String = "Data Source=mydatabase.db;Version=3;"

        Try
            Using conn As New SQLiteConnection(connectionString)
                conn.Open()
                Console.WriteLine("Successfully connected to the database!")

                'You can perform database operations here.
            End Using
        Catch ex As SQLiteException
            Console.WriteLine("Error: " & ex.Message)
        End Try
    End Sub
End Module

該程序旨在與“mydatabase.db”數據庫建立連接,並在成功建立連接後顯示成功通知。如果在此過程中出現任何錯誤,程序會將相關信息打印到控制台以供進一步分析。

如何獲取數據並將其加載到數組中

使用 SELECT SQL 命令對於從關係數據庫管理系統 (RDBMS)(例如 MySQL 或 PostgreSQL)檢索信息至關重要。假設 RDBMS 中有一個名為“用戶”的表格實體,其中包含具有各種屬性的記錄。為了從“Users”表的每一行中提取“Name”列的值,必須相應地構建 SELECT 語句。

 SELECT Name FROM Users

通過在 Program.vb 模塊中合併以下代碼片段,可以從數據庫中提取信息並將其存儲在集合中:

 Dim query As String = "SELECT Name FROM Users"
Dim names As New List(Of String)()

Using conn As New SQLiteConnection(connectionString)
    conn.Open()

    Using cmd As New SQLiteCommand(query, conn)
        Using reader As SQLiteDataReader = cmd.ExecuteReader()
            While reader.Read()
                names.Add(reader("Name").ToString())
            End While
        End Using
    End Using
End Using

' Now the 'names' list is full of users' names.
' You can convert this list to an array if you want:
Dim namesArray() As String = names.ToArray()

' Print array content for testing purposes
For Each name In namesArray
   Console.WriteLine(name)
Next 

您將觀察到命令提示符中顯示的一系列條目,這些條目與關係模式中存儲的數據相對應。

/bc/images/dotnet-run-users-show.jpg

給定的代碼採用了列表數據結構,該結構在結束時轉換為數組之前具有可以動態擴展的容量。當檢索的記錄的預期數量仍然不確定時,這種實現方式被證明特別有利。

如何使用 INSERT 將數據添加到數據庫

INSERT INTO 語句用於將新信息合併到數據庫中。為了說明這一點,讓我們檢查一下“Users”表的場景,該表擁有標識為“Name”和“Country”的兩列。

要使用結構化查詢語言 (SQL) 在數據庫中創建新用戶,可以使用以下基本查詢:

 INSERT INTO Users (Name, Country) VALUES ('Fatih', 'TR')

為了利用此查詢將新用戶合併到數據庫中,請修改 Program.vb 文檔,如下所示:

 Dim query As String = $"INSERT INTO Users (Name, Country) VALUES ('{name}', '{country}')"
    Using conn As New SQLiteConnection(connectionString)
        conn.Open()

        Using cmd As New SQLiteCommand(query, conn)
            cmd.ExecuteNonQuery()
        End Using
    End Using

    Console.WriteLine($"{name} has been successfully added to the database!") 

在本例中,採用了涉及字符串插值的基本方法來構建查詢;然而,在實際軟件架構的範圍內應該避免這種方法,因為它容易受到基於 SQL 注入的安全漏洞的影響。更好的做法是實施參數化查詢,這不僅可以增強數據庫操作期間的安全性,還可以提高數據庫操作的效率。

參數化查詢使用佔位符元素代替直接字符串連接,將數據合併到 SQL 語句中。通過採用這種方法,可以有效地緩解由於不正確構建的 SQL 查詢而可能產生的許多潛在安全漏洞。

 Dim query As String = "INSERT INTO Users (Name, Country) VALUES (@Name, @Country)"
'...
cmd.Parameters.AddWithValue("@Name", userName)
cmd.Parameters.AddWithValue("@Country", userCountry)

在 VB.Net 中使用數據庫的任何其他技巧

/bc/images/how-do-reverse-proxies-work-102.jpg

最初,VB.NET 中的數據庫操作可能看起來令人生畏;然而,通過堅持一些基本原則和指導方針,人們可以很容易地熟練掌握這些基本概念。

利用參數化查詢是防範數據庫系統中潛在安全威脅的有效方法。

一旦檢索或更新數據的過程完成,確保正確關閉所有數據庫連接至關重要。

確保定期更新和重組您的數據庫,以確保隨著數據模型隨時間的發展而獲得最佳性能。

請確保創建冗余文件,作為發生意外情況時的預防措施。

與任何技術一樣,數據庫也在不斷發展。軟件得到更新,新工具出現,我們發現更好的做事方式。保持信息靈通和更新是個好主意。有些工具充當中介,例如實體框架,使編寫數據庫相關代碼變得更容易。

如何進一步推進您的 VB.NET 之旅

VB.NET 與廣泛的 Microsoft 生態系統有著密切的聯繫,提供了無與倫比的穩定性和易用性組合。為了充分了解其功能,謹慎的做法是從 Microsoft 提供的權威資源開始。隨後,深入研究經驗豐富的專業人士經常光顧的在線教程、討論線程和網絡,他們慷慨地傳授他們的智慧和專業知識。

事實上,所有專業人士在其職業生涯的某個階段都曾是新手。通過堅持不懈的努力、真正的興趣和適當的學習材料,一個人最終可以精通 VB.NET。擁抱探索、提出疑問,最重要的是享受發現新知識的旅程,這一點至關重要。