線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2118
推到 Plurk!
推到 Facebook!

ASP.NET 更新資料要這麼麻煩嗎?

尚未結案
will
中階會員


發表:176
回覆:135
積分:62
註冊:2002-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-29 20:24:16 IP:220.141.xxx.xxx 未訂閱
小弟學習asp.net的程式, 看了書上及網路上的範例 不禁令人困惑, 更新一筆資料, 要這麼麻煩嗎? 例如Starter kit的範例中, 更新一個聯絡人的5 個欄位 借助Store procedure 之下 還要寫這麼多程式 請問 ASP.NET 更新資料要這麼麻煩嗎? ----------------------------------------------------------------------------------------- SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]); SqlCommand myCommand = new SqlCommand("Portal_UpdateContact", myConnection); // Mark the Command as a SPROC myCommand.CommandType = CommandType.StoredProcedure; // Add Parameters to SPROC SqlParameter parameterItemID = new SqlParameter("@ItemID", SqlDbType.Int, 4); parameterItemID.Value = itemId; myCommand.Parameters.Add(parameterItemID); SqlParameter parameterUserName = new SqlParameter("@UserName", SqlDbType.NVarChar, 100); parameterUserName.Value = userName; myCommand.Parameters.Add(parameterUserName); SqlParameter parameterName = new SqlParameter("@Name", SqlDbType.NVarChar, 100); parameterName.Value = name; myCommand.Parameters.Add(parameterName); SqlParameter parameterRole = new SqlParameter("@Role", SqlDbType.NVarChar, 100); parameterRole.Value = role; myCommand.Parameters.Add(parameterRole); SqlParameter parameterEmail = new SqlParameter("@Email", SqlDbType.NVarChar, 100); parameterEmail.Value = email; myCommand.Parameters.Add(parameterEmail); SqlParameter parameterContact1 = new SqlParameter("@Contact1", SqlDbType.NVarChar, 100); parameterContact1.Value = contact1; myCommand.Parameters.Add(parameterContact1); SqlParameter parameterContact2 = new SqlParameter("@Contact2", SqlDbType.NVarChar, 100); parameterContact2.Value = contact2; myCommand.Parameters.Add(parameterContact2); myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close();
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-29 23:02:36 IP:220.132.xxx.xxx 未訂閱
Hi, 若是配合 stored procedure 的話, 差不多是這樣了, 因為該範例的 sp 參數很多, 所以得一個一個建, 一個一個給值, 若是習慣使用 sql command 的方式, 一樣可以使用, 如下,    
  SqlConnection conn=new SqlConnection("Password=xxx;Persist Security Info=True;User ID=xxx;Initial Catalog=test;Data Source=server_ip");
  conn.Open();
  
SqlCommand cmd = new SqlCommand("update customer set name='test', age=25 where id=2103", conn);
  cmd.ExecuteNonQuery();
                        
  conn.Close();
OsX
版主


發表:6
回覆:151
積分:111
註冊:2003-05-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-31 00:46:40 IP:220.133.xxx.xxx 未訂閱
若是你要使用 StoreProcedure, 在 StoreProcedure 的 Parameters 部份, 可以不用一個一個 用 Add 的方式, 你可以使用SqlCommandBuilder 這個類別來幫你填入所有的 Parameters, 使用方式大致如下:
aCommand.CommandType = CommandType.StoredProcedure;
aCommand.CommandText = "Portal_UpdateContact";
SqlCommandBuilder.DeriveParameters( aCommand );
不個在 .Net framework 1.1 上的 SqlCommandBuilder 在 DeriveParameters 這個方法上有 Bug, 若你有使用 Transaction 的話, 記得使用 SqlCommandBuilder.DeriveParameters 這個方法, 必須在呼叫 Connection.BeginTransaction 之前, 若是 包在 Connection.BeginTransaction 之中, 你將會得到一個錯誤訊息
系統時間:2024-05-19 10:23:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!