iT邦幫忙

0

SqlDataAdapter 的 DeleteCommend

我是剛接觸ASP NET的新手 想請問一下 為甚麼我 mydelete.Update卻沒有任何作用 我有上網找了許多資料但是都沒用 希望有大大可以跟我說謝謝><
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection Conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString);
SqlDataAdapter mydata = new SqlDataAdapter("select id,test_time,title from test",Conn);
DataSet ds = new DataSet();
mydata.Fill(ds, "test");
GridView1.DataSource = ds;
GridView1.DataBind();
try
{
SqlDataAdapter mydelete = new SqlDataAdapter("delete from test where id="+TextBox1.Text,Conn);
mydelete.Update(ds,"test");
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
finally
{
DBinit();
}
}

看更多先前的討論...收起先前的討論...
外獅佬 iT邦大師 1 級 ‧ 2015-06-04 17:00:07 檢舉
因為你的dataset裡頭的datarow狀態並沒有被更新啊
賽門 iT邦超人 1 級 ‧ 2015-06-04 17:01:56 檢舉
改用SqlDataSource吧....SqlDataAdapter是很早以前的老東西.
外獅佬 iT邦大師 1 級 ‧ 2015-06-04 17:06:28 檢舉
改用ORM吧...SqlDataSource是有點久以前的東西毆飛毆飛
石頭 iT邦高手 1 級 ‧ 2015-06-04 17:26:50 檢舉
不好意思您說的datarow更新是甚麼意思壓><
外獅佬 iT邦大師 1 級 ‧ 2015-06-04 17:33:15 檢舉
ㄟ?書上沒寫啊?汗
wiselou提到:
改用ORM吧...SqlDataSource是有點久以前的東西

改用記事本好了...立可白遞上偷笑
wiselou提到:
書上沒寫啊

老師沒教偷笑
鐵殼心 iT邦高手 1 級 ‧ 2015-06-05 09:38:38 檢舉
說好的筆記本呢?疑惑
andysheu iT邦新手 4 級 ‧ 2015-06-05 12:38:59 檢舉
沒想到現在學校還教這個
tecksin提到:
說好的筆記本呢

我只有偷拿到外獅佬的筆記本....失神
外獅佬 iT邦大師 1 級 ‧ 2015-06-05 14:03:53 檢舉
不然咧...教這個...
Program HelloWorld(output)
begin
  writeln('Hello Pascal')
end.
外獅佬 iT邦大師 1 級 ‧ 2015-06-05 14:05:20 檢舉
還是這個...
MOV AL, 1h
MOV EAX, [EBX]

毆飛
外獅佬 iT邦大師 1 級 ‧ 2015-06-05 14:05:59 檢舉
疑惑誰把無忌小朋友的巧虎偷走了....
這種MOV AL 太方便了.
外獅佬 iT邦大師 1 級 ‧ 2015-06-05 14:35:02 檢舉
汗....完敗Orz
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
4
外獅佬
iT邦大師 1 級 ‧ 2015-06-05 08:44:19
最佳解答

救救北極熊,請養成隨手關燈的好習慣;救救MIS,也請養成愛用parameter的好習慣。

&lt;pre class="c" name="code">
using(SqlConnection conn = new SqlConnection("YOUR CONNECTION STRING")
{
  using(SqlCommand cmd = new SqlCommand("DELETE FROM [test] WHERE [id]=@id",conn))
  {
    conn.Open();
    cmd.Parameters.AddWithValue("@id",TextBox1.Text);
    int row_effected = cmd.ExecuteNonQuery();
  }
}
6
賽門
iT邦超人 1 級 ‧ 2015-06-04 16:59:14

你應該用SqlDataAdapter的DeleteCommand來執行Delete動作.

&lt;pre class="c" name="code">SqlDataAdapter mydelete = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand"delete from test where id="+TextBox1.Text, Conn);
mydelete.DeleteCommand = cmd;
mydelete.Update(ds,"test");
看更多先前的回應...收起先前的回應...
外獅佬 iT邦大師 1 級 ‧ 2015-06-04 17:02:23 檢舉

真搞不懂樓主為什麼要那麼麻煩....把資料先撈回來,再去執行刪除...
視server資源為無物....
直接拿個SqlCommand去執行不就好了汗

石頭 iT邦高手 1 級 ‧ 2015-06-04 17:15:00 檢舉

我以為說要先把資料放進記憶體中(因為是用Dataset)來之後再刪除
所以是可以不用這樣做就可以直接刪除嗎?

外獅佬 iT邦大師 1 級 ‧ 2015-06-04 17:37:23 檢舉

如果要用DataAdapter去刪除資料
比較『正常』的作法是

  1. 在DataSet裡頭找到你要的datarow,然後把它Remove掉;這時這筆資料的DataRowState會變成Deleted
  2. 呼叫DataAdapter.Update()
外獅佬 iT邦大師 1 級 ‧ 2015-06-04 17:38:06 檢舉

只是...Web...這麼做有點...
網頁是無狀態的,沒有必要,也請不要這樣做

原PO:

先想想網頁程式是怎麼運作的?
然後挑一個好用的技術來處理,例如:DataReader

可以參考這篇文章
[ADO.NET] Web Form為求快速,可使用 DataReader直接處理資料來源
http://www.dotblogs.com.tw/mis2000lab/archive/2012/01/13/dataset_datareader_20120113.aspx

不要拿到範例,不分青紅皂白、不分源由就硬幹、硬K
對您沒幫助喔

原PO一開始的程式,不會運作,我這篇文章有說明:

ADO.NET(圖解與補充說明)DataSet / DataAdapter如何 修改 (Update)一筆紀錄?
http://www.dotblogs.com.tw/mis2000lab/archive/2013/01/08/dataset_dataadapter_update_flow_20130108.aspx?fid=77175#feedback

看來您對 DataSet如何運作,完全不懂
那就先理解他,再來用

0
77012904
iT邦新手 3 級 ‧ 2015-06-04 18:40:52

ASP.NET 只是要表格操作的話,用DataGridView就很容易處理,幾乎不用寫甚麼程式碼.

另外,你也可以考慮看看用LINQ to SQL啊

石頭 iT邦高手 1 級 ‧ 2015-06-04 18:45:27 檢舉

謝謝您的回答!!
但是我想說我想要試試看用code behind來寫寫看^^

您用我的書、我的範例在練習

為什麼不直接來信問我、跟我討論呢?

另外,能否說明您堅持使用 DataSet的原因?
為什麼不用DataReader?

來上課吧,好過自己一直撞牆 :-)
http://www.dotblogs.com.tw/mis2000lab/archive/2011/06/24/29807.aspx

石頭 iT邦高手 1 級 ‧ 2015-06-10 14:22:30 檢舉

我之前以為DataReader select只能用ExecuteReader
DataSet只能使用 select用Fill()和 insert,update,和delete用Update()

我要發表回答

立即登入回答