2011-04-29 75 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