2013-11-15 74 views
0

我想爲所有與數據庫的交互編寫一個類,並且有一些問題。數據庫所有操作的SQL類

class Sqlconnection 
{ 
    private string connection = null; 

    private string result = null; 

    public SqlConnection dbConnection() 
    { 
     SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionInfo"].ConnectionString); 
     try 
     { 
      connection.Open(); 
      return connection; 
     } 
     catch (SqlException ex) 
     { 
      return false; 
     } 
    } 
} 

我不能用this.connection引用類。我想在connectionCmd和connectionClose等其他函數中使用連接。我怎樣才能將sql連接字符串引用到類中?並且返回false將不起作用,但是如果連接建立成功,那麼檢查主程序是否有必要?

謝謝大家!

+3

*值*是這個類中添加什麼給你?您已經使用的'SqlConnection'對象在其上定義了「Open」,「Close」和「ExecuteXXX」方法。 –

+0

要擴展@ Damien_The_Unbeliever的觀點 - 如果你的類的目的是添加實用輔助函數,那麼「擴展方法」是一個很好的方法。現在...如果只有那些已經存在的庫(咳嗽「小巧玲瓏」咳嗽) –

+0

當方法的返回值是SqlConnection引用時,不能用bool返回。它甚至不能編譯。 – jannagy02

回答

0

你的第一個問題是你的班級名字的可怕選擇。這很容易混淆SqlconnectionSqlConnection。由於這個原因,我誤解了你的代碼兩次。所以給你的班級一個適合初學者的名字。接下來,決定是否要封裝SqlConenction。編寫一個類來處理與數據庫的所有交互是沒有意義的,如果它允許應用程序的其餘部分訪問連接。

你可能做這樣的事情後:

你應該把你自己的OO編碼改進的
class DatabaseAccessLayer 
{ 
    private readonly string connectionString; 
    private SqlConnection connection; 

    public DatabaseAccessLayer(string connectionString) 
    { 
     this.connectionString = connectionString; 
    } 

    public bool CreateDbConnection() 
    { 
     try 
     { 
      connection = new SqlConnection(connectionString); 
      connection.Open(); 
      return true; 
     } 
     catch (SqlException ex) 
     { 
      return false; 
     } 
    } 

    // Add other methods to interact with the database 
} 
2

您想訪問不同班級的私人班級的私人成員嗎?如果我正在讀你正確的話,你需要查看訪問修飾符以及私有,公共,靜態和內部(以及其他)的含義。如果我沒有正確閱讀你,我很抱歉,請忽略我的評論或告訴我戴上眼鏡。

+0

私有字符串連接是私有的,因爲只有SqlConnection類需要它。我想在mainprogramm中創建一個新類的對象,並調用公共函數dbConnection來創建一個連接。這不正確嗎? – mnlfischer

0

第一。如果你想爲所有SQL任務建立一箇中心類,爲什麼要重新發明輪子。你爲什麼不試試這個:

http://www.microsoft.com/en-us/download/details.aspx?id=435

+0

建議有人避免重新發明方向盤,方法是指出他們發現重新發明方向盤的文章不是很有幫助。 –

+0

@DavidArno對不起,我想給數據訪問應用程序塊不是上述:S。 – Aneef