none
判斷資料重複輸入 RRS feed

  • 問題

  • 我是用c# 2008的
    請問我想要ㄧ個簡單 判斷輸入的資料是否重複應該怎麼做呢??
    如果資料表(abc)就只有兩個欄位 編號(a) 跟姓名(b)
    然後兩個TextBox 跟一個Button、Lable,當我按下Button的時候如果姓名已經存在,就用Lable顯示資料重複 ,請問這樣要怎麼做呢?? 是要下sql跟try catch嗎??
    sql是要用 where 姓名=姓名 還是count(姓名) > 1呢? 還是別的....
    try catch 又要怎麼寫阿?
    謝謝



    謝謝各位!! 可以了!!
    • 已編輯 touraco 2009年5月8日 上午 06:34
    2009年5月6日 上午 02:04

解答

  • touraco:
         你是要判斷在資料表中有無重覆的姓名欄位吧?
         這可以寫一段函式,用sqlDataReader來做
         example:
        
            Dim strConn As String
            strConn = [你的連線字串]
            Dim MyConn As SqlConnection
            Dim MyDataReader As SqlDataReader
            Dim MyCmd As SqlCommand
            Dim MyAuth As Boolean
            Dim SQLStr As String = "Select *[也可以隨便選一個欄位]  from 你的資料表 Where 姓名欄位=@參數1 "
            MyConn = New SqlConnection(strConn)
            MyCmd = New SqlCommand(SQLStr, MyConn)
            MyCmd.Parameters.AddWithValue("@參數1", 你要傳來判斷的變數)
            MyConn.Open()
            MyDataReader = MyCmd.ExecuteReader()
            myAuth = MyDataReader.Read()
            MyDataReader.Close()
            MyConn.Close()

            如果myAuth=True,就表示此姓名已存在
            [這是用VB.NET2005寫的,可自行修改為C#]
    • 已編輯 Bill ChungMVP 2009年5月6日 上午 02:17 增加使用語言說明
    • 已提議為解答 Johnny.Net 2009年5月6日 上午 02:54
    • 已標示為解答 Lolota Lee 2009年5月8日 上午 01:13
    2009年5月6日 上午 02:16
  • SqlConnection conn = new SqlConnection("your connection string");
    SqlCommand cmd = new SqlCommand("SELECT ISNULL(COUNT(EmployeeID), 0) FROM Employees WHERE Name = @name", conn); // 假設你的表格是 Employees,有一個 EmployeeID 和 Name 欄位。
    
    cmd.Parameters.AddWithValue(@name, name); // name 是你要比對的名稱。
    conn.Open();
    bool result = (Convert.ToInt32(cmd.ExecuteScalar()) == 0) ? false : true; // 回傳 0 表示不存在,否則存在。
    
    conn.Close();
    conn = null;
    cmd = null;


    小人物一枚。
    • 已標示為解答 Lolota Lee 2009年5月8日 上午 01:13
    2009年5月6日 上午 04:53
    版主

所有回覆

  • touraco:
         你是要判斷在資料表中有無重覆的姓名欄位吧?
         這可以寫一段函式,用sqlDataReader來做
         example:
        
            Dim strConn As String
            strConn = [你的連線字串]
            Dim MyConn As SqlConnection
            Dim MyDataReader As SqlDataReader
            Dim MyCmd As SqlCommand
            Dim MyAuth As Boolean
            Dim SQLStr As String = "Select *[也可以隨便選一個欄位]  from 你的資料表 Where 姓名欄位=@參數1 "
            MyConn = New SqlConnection(strConn)
            MyCmd = New SqlCommand(SQLStr, MyConn)
            MyCmd.Parameters.AddWithValue("@參數1", 你要傳來判斷的變數)
            MyConn.Open()
            MyDataReader = MyCmd.ExecuteReader()
            myAuth = MyDataReader.Read()
            MyDataReader.Close()
            MyConn.Close()

            如果myAuth=True,就表示此姓名已存在
            [這是用VB.NET2005寫的,可自行修改為C#]
    • 已編輯 Bill ChungMVP 2009年5月6日 上午 02:17 增加使用語言說明
    • 已提議為解答 Johnny.Net 2009年5月6日 上午 02:54
    • 已標示為解答 Lolota Lee 2009年5月8日 上午 01:13
    2009年5月6日 上午 02:16
  • SqlConnection conn = new SqlConnection("your connection string");
    SqlCommand cmd = new SqlCommand("SELECT ISNULL(COUNT(EmployeeID), 0) FROM Employees WHERE Name = @name", conn); // 假設你的表格是 Employees,有一個 EmployeeID 和 Name 欄位。
    
    cmd.Parameters.AddWithValue(@name, name); // name 是你要比對的名稱。
    conn.Open();
    bool result = (Convert.ToInt32(cmd.ExecuteScalar()) == 0) ? false : true; // 回傳 0 表示不存在,否則存在。
    
    conn.Close();
    conn = null;
    cmd = null;


    小人物一枚。
    • 已標示為解答 Lolota Lee 2009年5月8日 上午 01:13
    2009年5月6日 上午 04:53
    版主
  • 請問是要寫在哪阿....只需要寫這樣就可以了嗎??
    還需要其他動作嗎??
    2009年5月6日 上午 08:17
  • Hi,

    您可以參考下列資料:

    try catch:
    http://msdn.microsoft.com/zh-tw/library/0yd65esw(VS.80).aspx


    另外您提到要在按鈕按下時去判斷, 下列是Button Event list, 您可以嘗試去找出符合您要的事件:
    http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.button_events.aspx


    微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan
    2009年5月6日 上午 08:22
  • 根據您的需求,上面專家們提到的範例程式應該是寫在BUTTON的CLICK事件中,以版主小朱提供的解答為例,只要你判斷result為true時,在LABEL上顯示資料重複,否則將資料新增到資料庫中。
    2009年5月7日 上午 01:10