iT邦幫忙

0

C#判斷資料庫是否有重複輸入

c#


各位大大我是新人想請教求助最近遇到惱人的問題我要判斷資料庫是否有重複的資料可是一值判斷不過!!以下圖片是我的代碼!小弟是初學者請大大幫幫忙感激不盡~~

看更多先前的討論...收起先前的討論...
ycl8000 iT邦高手 1 級 ‧ 2015-06-02 12:04:54 檢舉
你要不要先瞭解一下 select * from Dept where DeptNo='' 有什麼作用?
是尋找Dept 表中的DeptNo的欄位~~
外獅佬 iT邦大師 1 級 ‧ 2015-06-02 12:20:07 檢舉
請問...為什麼要判斷空白的DeptNo?
外獅佬 iT邦大師 1 級 ‧ 2015-06-02 12:20:48 檢舉
落寞....為什麼要自己組SQL字串....落寞
外獅佬 iT邦大師 1 級 ‧ 2015-06-02 12:21:42 檢舉
難道老師都是這麼教的嗎??疑惑汗
那如果我要查詢整個欄位那我裡面應該放的是DeptNo嗎!?
小弟~新手~請多包涵= ="需要大大的指教~~哭
是否各位大大們可以提供幾個範例~~~參考一下呢!??!!?感恩~~~謝謝
外獅佬 iT邦大師 1 級 ‧ 2015-06-02 13:15:56 檢舉
using(SqlConnection conn = new SqlConnection("YOUR CONNECTION STRING")
{
  using(SqlCommand cmd = new SQlCommand())
  {
    cmd.Connection = conn;
    cmd.CommandText = "SELECT COUNT([DeptNo]) AS [cnt] FROM [Dept] WHERE [DeptNo=@deptno";
    cmd.Parameters.AddWithValue("@deptno",txtNo.Text);
    if(conn.State==ConnectionState.Closed)
    {
      conn.Open();
    }
    bool isExist = false;
    using(SqlDataReader reader = cmd.ExecuteReader())
    {
      reader.Read();
      isExist = reader.GetInt32(0)>0;
    }
    if(!isExist)
    {
      cmd.CommandText = "INSERT INTO [Dept] ([DeptNo]) VALUES(@deptno)";
      int row_count = cmd.ExecuteNonQuery();
    }
    else{....}
  }
}
讚謝謝
希望對您有幫助

改用參數來撰寫,避免自己組「字串」來形成SQL指令

[FAQ] ADO.NET 參數寫法 Parameter(避免SQL Injection資料隱碼攻擊)
http://www.dotblogs.com.tw/mis2000lab/archive/2014/08/29/ado.net_parameter_sql_injection_20140829.aspx

1 個回答

10
wiseguy
iT邦超人 1 級 ‧ 2015-06-02 13:46:26
最佳解答

沒有唯一鍵的資料,才需要《先找後增》來確定是否重覆。既然有 DeptNo 欄位是唯一鍵了,那就設為 Unique Key,之後就不必先判斷,直接新增。有重覆的話,資料庫會告訴你。如此,在大多數不會重覆的情況下,只需一個 SQL。若先找後增,則不管重不重覆,都需要兩個 SQL,明顯沒效率。

讓 DB 做 DB 該做的,讓程式做程式該做的。

有道理~~感謝大大的回覆!!!我了解了....我會再修改一下謝謝

外獅佬 iT邦大師 1 級 ‧ 2015-06-02 17:54:35 檢舉

記得要try...catch嘿...偷笑

我要發表回答

立即登入回答