2012-12-23 77 views
1

我試圖檢查數據庫中是否存在數值,並嘗試將其「排除」到var。 並不能讓它變成1 ...檢查數據庫中是否存在值

這裏是我的代碼來檢查。

 if(!sqlUtil.Check_Person_Exists(txt_FirstName.Text.Trim(),txt_Surname.Text.Trim())) 
         { 
          // Insert 
          // ====== 
          sqlUtil.Insert_person(obj); 

          // Redirect 
          // ======== 
          Response.Redirect("Default.aspx"); 

         } 
         else 
         { 
          txt_FirstName.BackColor = Color.FromName(ConfigurationManager.AppSettings["ErrorColour"]); 
          txt_Surname.BackColor = Color.FromName(ConfigurationManager.AppSettings["ErrorColour"]); 
          lbl_message.Text = " * '" + txt_FirstName.Text + " " + txt_Surname.Text + 
               "' already Exists!"; 
         } 

這裏是檢查方法。

 public Boolean Check_Person_Exists(String Fname, String Lname) 
    { 
     // Init() 
     // ====== 
     SqlConnection conn = null; 
     SqlDataReader rdr = null; 
     SqlCommand cmd = null; 
     var iPerson = 0; 
     var bPerson = false; 

     try 
     { 
      // Config 
      // ------- 
      conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString); 
      conn.Open(); 
      cmd = new SqlCommand("[sp_Check_Person_Exists]", conn); 
      cmd.CommandType = CommandType.StoredProcedure; 

      // Param(s)? 
      // --------- 
      cmd.Parameters.Add("@s_FirstName", SqlDbType.NVarChar, 50).Value = Fname; 
      cmd.Parameters.Add("@s_Surname", SqlDbType.NVarChar, 50).Value = Lname; 

      // Execute 
      // ------- 
      rdr = cmd.ExecuteReader(); 

      // Row(s)? 
      // ------- 
      if (rdr.HasRows) 
      { 
       // Read 
       // ---- 
       while (rdr.Read()) 
       { 
        // Something there? 
        // ---------------- 
        if (rdr["FirstName"].ToString() !=string.Empty) 
        { 
         // Valid? 
         // ------ 
         Int32.TryParse(rdr["FirstName"].ToString(), out iPerson); 
         if(iPerson > 0) 
         { 
          // Exists 
          // ------ 
          bPerson = true; 
         } 
        } 
       } 

      } 
      // Clean up/close down 
      // --------------------- 
      cmd.Dispose(); 
      rdr.Dispose(); 
      rdr.Close(); 
      conn.Dispose(); 
      conn.Close(); 
     } 
     catch (SqlException ex) 
     { 

      throw ex; 
     } 
     finally 
     { 
      // Clean up/close down 
      // --------------------- 
      if (cmd != null) 
      { 
       cmd.Dispose(); 
      } 
      if ((rdr != null) && (!rdr.IsClosed)) 
      { 
       rdr.Close(); 
      } 
      if ((conn != null) && (conn.State != ConnectionState.Closed)) 
      { 
       conn.Dispose(); 
       conn.Close(); 
      } 
     } 
     // Return 
     // ====== 
     return bPerson; 
    } 
} 

對//有效嗎? 檢查我正在嘗試到iPerson,這是它失敗的地方,不會填充iPerson。

這是我的存儲過程。

ALTER PROCEDURE [dbo].[sp_Check_Person_Exists] 
    @s_FirstName nvarchar(50), 
    @s_Surname nvarchar(50) 
AS 
BEGIN 
SELECT  FirstName, Surname 
FROM   tbl_person 
WHERE  (FirstName = @s_FirstName) AND (Surname = @s_Surname) 
END 

我指定我的變量,這一切工作正常,但就是不會填充iPerson ..

回答

0

你試圖對人的名字解析爲一個Int32?您必須查詢該ID並將其解析到iPerson中。

+1

我已經將PersonID添加到存儲過程,現在我可以獲得一個ID謝謝。 – StudentRik

相關問題