2009-11-07 29 views
2

構建一個相對簡單的網站,並需要在數據庫中存儲一些數據(主要是認證,但有一些每用戶的東西)。我以前在幾個網站上工作過,並且也在那裏使用了數據庫,但從未喜歡我訪問數據庫的方式。如何從asp.net使用SQL?

我通常這樣做的方式是擁有一個SqlMethods.cs,它基本上是一個靜態類,有很多靜態方法,如bool CheckUserExistence(string username, string password)SqlDataReader GetJobListings(int advertiserId),每個靜態方法基本上都是「開放式連接,稱爲存儲過程,返回它返回的內容「。然而,這種方法對我來說似乎並不自然。我無法將自己的想法放在我想要的樣子上,但這似乎......很奇怪。

所以,我的問題是這樣的:你如何從你的asp.net項目訪問數據庫?
我正在使用SQL2005。我也不認爲我需要任何類型的ORM,因爲從數據庫中獲得的真的沒有那麼多,但也許它更容易使用一個?建議一些東西。 謝謝!

編輯:我現在決定只創建一個靜態類Sql,將有一些SQL相關的方法(如ExecuteReader(sprocName, params[]),等等),將調用具有給定參數的存儲過程,只是返回DataReader。
然後,有特定功能的類,如Authentication與方法如CheckUserExistence(username, password)LogoffUser(session)。這些方法只會調用Sql.ExecuteReader("sp_Auth_CheckUserExistence", _some_params_here_)並根據需要處理結果。
我不知道這是好還是壞,但它似乎現在適合我。另外,我喜歡它的感覺 - 它的所有很好的分離功能。

那麼,還有什麼建議嗎?

+0

什麼版本的Visual Studio和/或.NET Framework您使用的是? – 2009-11-07 11:07:25

+0

.Net 3.5,VS2008(當然,VS2010B2,但是一旦死了,我會回到2008) – AASoft 2009-11-09 08:35:13

回答

2
+1

LINQ to SQL允許您將數據庫拖放到DataContext文件上。這會自動映射所有表,視圖和存儲過程。您可以通過自動生成的函數呼叫您的SP,並且可以返回相應的強類型數據 – 2009-11-07 02:03:14

+0

嗯,我應該已經看到了這個。 Linq對於它的成就非常棒,但它不是我所需要的。我需要SomeClass.CheckIfUserExists(用戶名,密碼);等 請參閱編輯的問題,看看我目前如何決定做到這一點。 – AASoft 2009-11-09 08:40:02

+0

那麼沒有什麼會有什麼像CheckIfUserExists什麼,除非你使用開箱即用的數據庫配置。 Linq會很好地構建該方法,然後您可以調用像CheckIfUserExists這樣的方法,它將爲您處理Linq部分。 – 2009-11-10 02:59:29

0

做到這一點是在你的數據庫中創建爲每個表數據訪問類最簡單的方法。它應該具有表中所有列的私有變量和公共屬性,並且您描述的方法應該填充內部變量(或使用它們來更新數據庫)。

Public Class MyTable 
    Private _id As Integer 
    Private _Name as String 

    Public ReadOnly Property ID As Integer 
     ' Regular stuff here 
    End Property 

    Public Property Name As String 
     ' Regular stuff here 
    End Property 

    Public Sub Load() 
     ' Call SQL and get a data reader. 
     ' Set _id and _Name from the data reader. 
    End Sub 
End Class 

然後,在你的其他代碼:

Dim mt As New MyTable 
mt.Load() 
' Now use mt.ID and mt.Name to access the data 
+0

謝謝,但不是我想要的。這將數據從一個DB表加載到一個類中。不是我所需要的(雖然我想不可能說出我真正想從我的描述中得到什麼)嘿。 – AASoft 2009-11-09 08:34:26

+0

每個類也可以有直接調用數據庫的靜態方法,這與您在編輯中描述的非常相似。 – 2009-11-09 14:52:24