2011-09-04 41 views
0

我已經創建了一個數據源來連接SQL Server數據庫。當我使用GridView連接它時它工作正常。我需要閱讀某個項目(比如FirstName)並將該值存儲到一個變量中。使用數據源讀取SQL Server數據庫

如何使用此數據源?你可以給我這些陳述嗎?

感謝

回答

3

SqlDataSource旨在作爲顧名思義 - 用於數據綁定的數據源。它是而不是一種從數據庫表中獲取單個值的方法。

如果您需要讀取一個值,你應該使用ADO.NET直 - SqlConnectionSqlCommand - 閱讀該值 - 是這樣的:

string sqlStmt = "SELECT FirstName FROM dbo.YourTable WHERE ID = @ID"; 

using(SqlConnection conn = new SqlConnection(your-connection-string-here-)) 
using(SqlCommand cmd = new SqlCommand(sqlStmt, conn)) 
{ 
    cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 4044; 

    conn.Open(); 
    string firstName = cmd.ExecuteScalar().ToString(); 
    conn.Close(); 
} 

,如果你想讀的ExecuteScalar調用工作只單行,單列值 - 就像這裏一樣。否則,您需要使用SqlDataReader,或使用DataTableSqlDataAdapter填充該數據表(如果您有多行)。

更新:,如果你想使用一個SqlDataAdapter代替 - 這樣做:

public DataTable LoadData() 
{ 
    DataTable result = new DataTable(); 

    string sqlStmt = "SELECT ID, FirstName, LastName, Country " + 
        "FROM dbo.YourTable"; 

    using(SqlConnection conn = new SqlConnection(your-connection-string-here-)) 
    using(SqlCommand cmd = new SqlCommand(sqlStmt, conn)) 
    { 
     SqlDataAdapter dap = new SqlDataAdapter(cmd); 
     dap.Fill(result); 
    } 

    return result; 
} 

當你調用這個方法,你會得到一個DataTable包含您所定義的列的SQL語句以及數據庫表中的所有行。現在

DataTable myData = LoadData(); 

,你可以遍歷行,並獲得FirstName值的每一行:

foreach(DataRow row in myData.Rows) 
{ 
    string firstName = row["FirstName"].ToString(); 
    // do whatever you need to do with the first name 
} 
+0

是像ds.Tables [ 「表名」]行[ROWNUMBER] [ 「的ColumnName」 ]可能嗎?即使這不起作用,但有人推薦給我。 –

+0

@furqan sehgal:如果你使用'SqlDataAdapter'並填充'DataTable' - 是的!用'SqlDataSource' - 不行。 –

+0

請指教如何添加sqlDataAdapter和Datatable以及如何綁定它們。有沒有像WinForms中的綁定源。也請說明我需要做我的必要的操作。 –

相關問題