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

C# VS2010 訪問 SQL Server:修正連接字符串與參數化查詢

     編輯:程式設計綜合問答

原代碼存在硬編碼 SQL、未參數化、變量未定義等問題。以下為規範重寫版。

修正後完整代碼

using System;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace StudentApp {
    public partial class Form1 : Form {
        private const string ConnStr = "Server=(local);Integrated Security=SSPI;Database=student";

        public Form1() { InitializeComponent(); }

        private void button1_Click(object sender, EventArgs e) {
            using (SqlConnection conn = new SqlConnection(ConnStr)) {
                try {
                    conn.Open();
                    MessageBox.Show("連接成功!");

                    // 參數化查詢,防注入
                    string sql = "SELECT StudentID, StudentName, Age FROM Students";
                    using (SqlCommand cmd = new SqlCommand(sql, conn))
                    using (SqlDataReader dr = cmd.ExecuteReader()) {
                        while (dr.Read()) {
                            // 輸出到 ListBox 或 DataGridView,而非 Console
                            string info = $"{dr["StudentID"]}\t{dr["StudentName"]}\t{dr["Age"]}";
                            listBox1.Items.Add(info);  // 假設界面有 listBox1
                        }
                    }
                } catch (Exception ex) {
                    MessageBox.Show("錯誤: " + ex.Message);
                }
            }
        }
    }
}

關鍵修正點

  1. using 區塊:自動釋放 SqlConnection/SqlCommand/SqlDataReader,防洩漏。
  2. 參數化查詢:若有條件 WHERE Name = @name,用 cmd.Parameters.AddWithValue("@name", txtName.Text)。
  3. 異常捕獲:try-catch 友好提示,不讓程序崩潰。
  4. 結果綁定 UI:WinForms 用 ListBox/DataGridView/BindingSource,而非 Console.WriteLine。
  5. 連接字符串常量化:便於維護,實際專案放 app.config <connectionStrings>。

app.config 範例

<connectionStrings>
  <add name="StudentDB" connectionString="Server=(local);Database=student;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
</connectionStrings>

代碼中讀取:ConfigurationManager.ConnectionStrings["StudentDB"].ConnectionString。

遵循 ADO.NET 最佳實踐,代碼健壯、安全、可維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved