iT邦幫忙

1

C# Insert 如果有同樣一筆資料 能不要讓它重複新增嗎?

C# MySQL 中
我程式都寫好了,在(textbox)空格中,按鈕一按就能新增資料
但怎麼做才能按一次就能新增案第二次,因為有該筆資料它就不能給你新增

String Update = string.Format(" UPDATE sales set Item = '" + TextBox7.Text + "',Price = '" + TextBox12.Text + "',Date = '" + TextBox13.Text + "' where Item='" + TextBox4.Text + "'");

以上我程式新增code其中一段
要用
If else 去判斷嗎?
還是 按鈕那裏去改?

John Wu iT邦新手 4 級 ‧ 2018-04-25 13:58:58 檢舉
準備好要被 SQL injection了? XD
ted8224 iT邦新手 5 級 ‧ 2018-04-25 14:07:23 檢舉
只是個練習.... 會被攻擊?
優悠 iT邦新手 3 級 ‧ 2018-04-25 14:42:33 檢舉
資安觀念
新手慢慢來
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
暐翰
iT邦大師 1 級 ‧ 2018-04-25 14:16:18
最佳解答

C# Insert 如果有同樣一筆資料 能不要讓它重複新增嗎?

方法1:

資料庫表格設定PK就不會重複新增
新增了就會丟出違反pk的錯誤

方法2:

假如要server端判斷的話
可以在insert的時候加上insert into select from + not exists判斷

# 建立測試資料
create table temp_table (`NO` int);
insert into temp_table (`NO`) values (1);

# 以下演示要插入同樣一筆no=1的資料,但是經過select判斷有相同資料,所以不新增邏輯
# 記得把temp_table換成你的表格名稱
INSERT INTO temp_table (`NO`) #放你要新增的欄位名稱
SELECT * FROM (SELECT 1)  #放你要新增的值
AS tmp
WHERE NOT EXISTS (
    SELECT `NO` FROM temp_table WHERE `NO` = 1 #放查詢是否重複的查詢
) LIMIT 1;

方法3:

先去查詢一次有沒有資料
假如有不新增,假如沒有就新增


有問題在跟我說 :)

ted8224 iT邦新手 5 級 ‧ 2018-04-25 14:25:15 檢舉

大大 不用在後端
後面寫If else 判斷式去判斷嗎?
感謝大大回復

暐翰 iT邦大師 1 級 ‧ 2018-04-25 14:42:15 檢舉

可以
參考這段code

void 你的按鍵事件(Object sender , EventArgs e){  
    var strSQL = "SELECT COUNT(*) FROM 你的表格 WHERE 表格欄位 = 'xxxx'";
    var cmd = new MySqlCommand(strSQL, 你的連線物件);
    var intNumRows = Convert.ToInt32(cmd.ExecuteScalar());
    if(intNumRows > 0)
    {
        //作重複資料的提示
    }
    else{
        //作更新動作
    }
}

邏輯是假如有資料就提示重複資料,假如否就做更新動作

ted8224 iT邦新手 5 級 ‧ 2018-04-25 15:47:48 檢舉

感謝大大 回復

我要發表回答

立即登入回答