C# 預存程序呼叫及或傳送SQL回資料庫

預存程序呼叫 

SqlParameter[] parameters = {

    new SqlParameter("@name" , SqlDbType.Type , size)

}; //parameters不一定要有東西 可以空白,也就是沒有輸入值

DataTable dt = ReadStoredPorcedure("sp_name", parameters, "table_name");

protected DataTable ReadStoredPorcedure(string sp_name, SqlParameter[] parameters, string tableName)

        {

            DataSet ds = new DataSet();

            SqlCommand sqlCommand = new SqlCommand(sp_name, myConnection);

            try

            {

                myConnection.Open();

                sqlCommand.CommandType = CommandType.StoredProcedure;

                sqlCommand.CommandTimeout = 0;

                foreach (SqlParameter sqlP in parameters)

                    sqlCommand.Parameters.Add(sqlP).Value = sqlP.Value;

                SqlDataAdapter sqlDA = new SqlDataAdapter(sqlCommand);

                sqlDA.Fill(ds, tableName);

            }

            catch (Exception ex)

            {

                ShowMessage("資料庫錯誤 請聯絡系統管理者");

            }

            finally

            {

                sqlCommand.Parameters.Clear();

                myConnection.Close();

            }

            return ds.Tables[tableName];

        }

接著就可以使用dt進行DataSource的連結

接著,可以把上述的東西寫入SqlHelper(自定義類別)中並自行命名

以後就可以呼叫SqlHelper.ReadStoredPorcedure("sp_name", parameters, "table_name"); 就不需要在每個程式都寫ReadStoredProcedure()了

關於CommandType

CommandType 有三種類型

第一種Text 可以用string sql = "sql語法" 傳送進DB,難點在於可能出錯,因為C#不會幫你的SQL DEBUG

第二種是StoredProcedure 這種方法需要輸入StoredProcedure的名稱以及參數(非必填)才能啟動

但是由於StoredProcedure是已經寫好並且可以執行的程序,因此至少他能動。

第三種是TableDirect 這種方法我沒使用過,貌似是直接抓資料表。


留言

這個網誌中的熱門文章

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

MongoDB 入門

javascript 更改屬性及創建標籤