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

ASP.NET 新手入門:DB 工具類實現 GetDataTableBySql 方法消除編譯錯誤

     編輯:程式設計綜合問答

問題場景

WebForm 頁面調用 DB.GetDataTableBySql(sql) 報錯「未找到方法」,需在 DB 類中正確實現該靜態方法。

標準實現代碼

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public static class DB
{
    // 從 Web.config 讀取連接字符串
    private static readonly string strConn = 
        ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

    /// 
    /// 執行查詢返回 DataTable
    /// 
    public static DataTable GetDataTableBySql(string strSQL)
    {
        DataTable dt = new DataTable();
        using (SqlConnection conn = new SqlConnection(strConn))
        {
            using (SqlDataAdapter da = new SqlDataAdapter(strSQL, conn))
            {
                da.Fill(dt);
            }
        }
        return dt;
    }

    /// 
    /// 執行增刪改返回影響行數
    /// 
    public static int ExecuteNonQuery(string strSQL, params SqlParameter[] parameters)
    {
        using (SqlConnection conn = new SqlConnection(strConn))
        {
            using (SqlCommand cmd = new SqlCommand(strSQL, conn))
            {
                if (parameters != null) cmd.Parameters.AddRange(parameters);
                conn.Open();
                return cmd.ExecuteNonQuery();
            }
        }
    }
}

Web.config 配置

<connectionStrings>
  <add name="DefaultConnection" 
       connectionString="Data Source=.;Initial Catalog=MyDB;User ID=sa;Password=123456;" 
       providerName="System.Data.SqlClient" />
</connectionStrings>

頁面調用示例

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string sql = "SELECT * FROM Books";
        DataTable dt = DB.GetDataTableBySql(sql);
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
}

關鍵點總結

  • 方法必須聲明為 public static
  • 使用 using 確保連接釋放
  • 連接字符串放配置文件,勿硬編碼
  • 參數化查詢防 SQL 注入
頁面代碼截圖 DB類截圖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved