2011-04-29 148 views
0

我有一個網站設置爲查詢數據庫的用戶名,然後用用戶的信息填充Session[]變量。當我使用服務器的存儲過程查詢時,我找回整行。我如何拆分行並解析它,以便每個列分別被解析?從ADO.NET結果集檢索單個列

我對按鈕的代碼是:

protected void Button4_Click(object sender, EventArgs e) 
{ 
    string strConn = WebConfigurationManager.ConnectionStrings["TicketsConnectionString"].ConnectionString; 
    SqlConnection myConnection = new SqlConnection(strConn); 
    //Search button 
    string sqlText = ("select * from [dbo].[User]"); 






    SqlCommand myCommand = new SqlCommand(sqlText,myConnection); 
    myCommand.CommandType = CommandType.Text; 
    myConnection.Open(); 
    SqlDataReader objReader; 
    objReader = myCommand.ExecuteReader(); 

    objGrid.DataSource = objReader; 
    objGrid.DataBind(); 
} 

UPDATE

我更新了它string sqlText = ("select 'UserID', 'FirstName' from [dbo].[User] where UserID='"+txtTest.Text+"' and Password='" + txtPass.Text+"'");

但現在我得到以下列 列1列2 用戶名姓

+0

有很多種方式查詢數據庫使用ASP.net,所以你必須添加更多的細節和可能有些代碼,才能得到有用的東西。 – Murven 2011-04-29 03:18:55

回答

1

要讀取列的值,請使用此值:

avar = row["colname"]; 
+0

所以我的查詢應該是 – Nick 2011-04-29 03:37:32

+1

我不認爲這個例子中的查詢有什麼問題,並且你正在使用數據綁定,所以你不需要訪問一行。 – Hogan 2011-04-29 10:53:13

0

相反的:

string sqlText = ("select * from [dbo].[User]"); 

用途:

string sqlText = ("select username from [dbo].[User]"); 

,將返回你需要的列。

* UPDATE *

製作了一系列的所有屬性查詢的絕對不是一個好的選擇。您可以通過逗號這樣的分離選擇你需要的所有列:

string sqlText = ("select username, otherfield, evenAnotherField from [dbo].[User]"); 

然後你可以使用SqlDataReaderindexer得到你需要的值:

var username = objReader["username"]; 
+0

問題是我有大約8個不同的會話變量必須被填充。我應該只使用8個不同的查詢還是有更簡單的方法? – Nick 2011-04-29 04:00:41

+0

我將它更新爲 字符串sqlText =(「從'dbo'選擇'UserID','FirstName'。[User]其中UserID ='」+ txtTest.Text +「'和Password ='」+ txtPass.Text +「'」 ); 但現在我得到以下列 \t列1 \t列2 \t用戶名\t姓 – Nick 2011-04-29 05:31:17

+0

尼克,更新的問題,如果它改變。 – Hogan 2011-04-29 10:54:35