iT邦幫忙

0

請問我 C# Update 語法有下錯嗎?

以下程式碼

String Update = string.Format(" UPDATE sales SET Item = '電池' WHERE Item = '電腦' " , TextBox1.Text);
DataTable dt = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter(Update, conn);
MySqlCommand cmd = new MySqlCommand(Update, conn);
int n = cmd.ExecuteNonQuery();
cmd.ExecuteNonQuery();
GridView3.DataSource = dt;

        GridView3.DataBind();

        dt.Dispose();
        
        conn.Close();
        

我要把我的資料庫名子是sales,其中一個Item 資料裡 在 Textbox 空格內輸入資料 打字之類,按下 修改 就能更改欄位 Item資料
求解

看更多先前的討論...收起先前的討論...
untitled iT邦新手 5 級 ‧ 2018-04-20 09:47:27 檢舉
這樣下會整批電池都變成電腦了吧
ted8224 iT邦新手 5 級 ‧ 2018-04-20 10:00:51 檢舉
這只是一個練習這樣,把電腦改成電池....只有那一個資料
untitled iT邦新手 5 級 ‧ 2018-04-20 10:15:43 檢舉
這樣是沒有錯的吧
ted8224 iT邦新手 5 級 ‧ 2018-04-20 10:45:17 檢舉
不好意思 我有改我的發問內容了.... 麻煩大大 求解 跪求
untitled iT邦新手 5 級 ‧ 2018-04-20 11:01:06 檢舉
只是把UPDATE的語法移動到button_click裡面而已吧,SET item=textbox.text
優悠 iT邦新手 4 級 ‧ 2018-04-20 11:21:39 檢舉
FORMAT 沒放{0}
ted8224 iT邦新手 5 級 ‧ 2018-04-20 11:37:29 檢舉
String Update = " UPDATE sales SET Item = Textbox2.Text WHERE Item = '電腦' ";
這樣不行...請問 還要改哪裡?

2 個回答

0
coreychen
iT邦新手 5 級 ‧ 2018-04-20 11:48:16
String Update = string.Format("UPDATE sales SET Item = '{0}' WHERE Item = '電腦'                 " , TextBox1.Text);
看更多先前的回應...收起先前的回應...
ted8224 iT邦新手 5 級 ‧ 2018-04-20 11:50:20 檢舉

String Update = string.Format(" UPDATE sales SET Item = '{0}' WHERE Item = '電腦' ", TextBox2.Text);

ted8224 iT邦新手 5 級 ‧ 2018-04-20 11:54:36 檢舉

我改好了....但我發現一個Bug
我TextBox 裡打 安全帽
他會改安全帽...是由電腦那一格改安全帽,但是如果我在同一畫面打 隨身碟
它並不會由 安全帽 改成隨身碟....
這update只能用一次

小魚 iT邦大師 1 級 ‧ 2018-04-20 12:05:06 檢舉

因為你的設計本來就有問題...
它只能將電腦改掉而已...

ted8224 iT邦新手 5 級 ‧ 2018-04-20 12:28:13 檢舉

是不是 我後端 程式 還要加入什麼呢?

0
優悠
iT邦新手 4 級 ‧ 2018-04-20 12:44:52
String Update = string.Format(" UPDATE sales SET Item = '{0}' WHERE Item = '電腦' ", TextBox2.Text);

我來解釋下上面語法,更新 sales 把 Item=電腦 全部變成 Item=TextBox2.Text

這讓此資料表全部的 Item=電腦 變成 Item=TextBox2.Text
之後再執行就沒 Item=電腦 的資料 ,所以只能執行一次後就沒作用

要每次都能更新每筆,你要用其他欄位去找資料(例如:設定PK的某欄位iPER_PK

範例:因為你是GridView,你可以找個欄位做PK(不要重複也不要顯示出來)

像是這樣

String Update = string.Format(" UPDATE sales SET Item = '{0}' WHERE iPER_PK = '{1}' ", TextBox2.Text,GridView.SelectedDataKey);

GridView.SelectedDataKey 這個你GOOGLE下就會用了

補充:因為PK不會重複,所以一次只能改一筆,要多筆請參考批次並自己想一想

看更多先前的回應...收起先前的回應...
ted8224 iT邦新手 5 級 ‧ 2018-04-20 13:40:14 檢舉

String Update = string.Format(" UPDATE sales SET Item = '{0}' WHERE Item = '{1}'", TextBox2.Text, GridView.SelectedDataKey);

這樣沒法,他 GridView.SelectedDataKey); 跳錯誤
然後
我新增PK欄位
String Update = string.Format(" UPDATE sales SET Item = '{0}' WHERE PK = '{1}' ", TextBox2.Text,GridView.SelectedDataKey);
一樣GridView.SelectedDataKey);

ted8224 iT邦新手 5 級 ‧ 2018-04-20 15:45:16 檢舉

https://ithelp.ithome.com.tw/questions/10189047
可以順便幫忙嗎? 拜託大大們了

小魚 iT邦大師 1 級 ‧ 2018-04-21 15:00:39 檢舉

PK意思應該是主鍵,
不是欄位名稱,
當然你欄位名稱要取PK也不是不行...

米歐 iT邦新手 4 級 ‧ 2018-04-23 10:44:04 檢舉

建議可以先去看基本的SQL書,避免一些奇葩的狀況。

優悠 iT邦新手 4 級 ‧ 2018-04-23 11:03:53 檢舉

講太快,沒注意到,謝謝小魚大指點

我要發表回答

立即登入回答