首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

WinForms 連接 SQL Server 完整實作:從服務啟動到參數化查詢

     編輯:更多程式設計知識

環境準備

  1. 啟動 SQL Server 服務(SQL Server Configuration Manager)。
  2. 以 Windows 驗證登入,啟用 sa 帳號並設定密碼。
  3. 建立資料庫 booksystem。

連接字串與表單程式碼

public partial class Form1 : Form
{
    SqlConnection conn;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // 建議從設定檔讀取,避免硬編碼
        conn = new SqlConnection("server=.;database=booksystem;uid=sa;pwd=sa");
    }

    private void btnLogin_Click(object sender, EventArgs e)
    {
        try
        {
            conn.Open();
            MessageBox.Show(conn.State.ToString()); // 應顯示 Open
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message); // 友善錯誤提示
        }
        finally
        {
            conn.Close();
            MessageBox.Show(conn.State.ToString()); // 應顯示 Closed
        }
    }
}

參數化查詢防止 SQL Injection

string sqlStr = @"SELECT COUNT(*) FROM admin 
                  WHERE admName = @name AND admPwd = @pwd";

SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.AddWithValue("@name", txtName.Text.Trim());
cmd.Parameters.AddWithValue("@pwd", txtPwd.Text.Trim());

conn.Open();
try
{
    int count = (int)cmd.ExecuteScalar();
    if (count > 0) MessageBox.Show("登入成功");
    else MessageBox.Show("帳號密碼錯誤");
}
catch (Exception ex)
{
    MessageBox.Show("查詢發生錯誤:" + ex.Message);
}
finally
{
    conn.Close();
}

最佳實務重點

  • 使用參數化查詢:杜絕字串拼接,防止 SQL 注入。
  • 連接物件生命週期:建議在 `using` 區塊中建立/關閉連接,確保資源釋放。
  • 密碼安全:生產環境請勿明文儲存密碼,應使用雜湊加鹽(如 BCrypt)驗證。
  • 連接池:ADO.NET 預設啟用連接池,正確關閉連接即可重用,無需手動管理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved