iT邦幫忙

DAY 8
1

給學弟的ASP.NET網頁學習經驗系列 第 8

ASP.NET學習經驗#8----打一打鍵盤SqlConnection掌握資料庫連接

使用SqlDataSource的精靈按一按點一點很方便沒錯,

但是有很多事情都被精靈完成,反而自己也不知道精靈做了哪些事情

有時想自己做些變化(如檔案上傳)反而會綁手綁腳...

所以一開始還是新手我比較常使用SqlConnection

感覺掌握度比較高一些,也可以稍稍了解一點點內部如何運作!!!

開始動手敲一敲鍵盤囉

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

這些是會要使用的類別!!!

private string strConnectionName = "ConnectionString";//欲取得的連接字串名稱
private string strConnection = ConfigurationManager.ConnectionStrings[strConnectionName].ConnectionString;

使用ConfigurationManager可以取得Web.Config裡的連接字串

透過在設定檔裡取得需要的連接字串而才不會寫死變數(養成好習慣...雖然忘記是在哪看到的)

using (SqlConnection nowConnection = new SqlConnection(strConnection))//使用連接字串初始SqlConnection物件連接資料庫
{
    nowConnection.Open();//開啟連線
    using (SqlCommand command = new SqlCommand())
    {
            command.Parameters.Clear();//清空參數
            command.Parameters.Add("@CONTENT", SqlDbType.NVarChar).Value = txtContent.Text;
            command.Parameters.Add("@TITLE", SqlDbType.NVarChar).Value = txtTilte.Text;
            command.Parameters.Add("@DATE", SqlDbType.DateTime).Value = txtDate.Text;
            //SQL指令中使用的參數集合 添加後將自動替換指令中對應的參數
            //command.Parameters.AddWithValue("@TEXT", txtContent.Text);非不得已還是別這樣用
            command.CommandText = @"INSERT INTO [Table] (Title, [Content], Date) 
                                    VALUES (@TITLE, @CONTENT, @DATE)";
            command.Connection = nowConnection;//與資料庫連接
            int num = command.ExecuteNonQuery();
            if(num > 0)
                lbResult.Text = "新增完成";

    }
}

使用using陳述句 可以避免結束時忘記釋放資源

SqlConnection nowConnection = new SqlConnection(strConnection)

nowConnection.Dispose()

Dispose方法就是用來釋放資源

在字串""前加上@可以方便自行調整換行,比較順眼一點

裡面的@一樣是用來取得參數的

接著是幾種sqlconnection常用執行方式:

  • ExecuteNonQuery 回傳整數,代表新增、更新、刪除的影響資料筆數。
  • ExecuteReader 回傳SqlDateReader物件,可以取出所有查詢結果。
  • ExecuteScalar 回傳Object物件代表第一筆資料的第一個資料行內容。

最後當然可以補上一些

if(String.IsNullOrWhiteSpace(....))

做檢查避免不必要的資料缺失!!!

今天感覺寫比較少,但游泳真的好累.....To Be Continued


上一篇
ASP.NET學習經驗#7----點一點滑鼠SqlDataSource就可以完成新增(Insert)資料的功能?
下一篇
ASP.NET學習經驗#9----FileUpload好難使喚只好動手自己來
系列文
給學弟的ASP.NET網頁學習經驗30

尚未有邦友留言

立即登入留言