从ADO.NET结果集中检索单个列

时间:2011-04-29 03:13:30

标签: c# sql ado.net

我有一个网站设置为在数据库中查询用户名,然后使用用户的信息填充Session[]变量。当我使用服务器的存储过程进行查询时,我会返回整行。如何拆分行并解析它,以便每个列分别进行解析?

按钮的代码是:

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();
}

更新

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

但现在我得到以下专栏 Column1 Column2  UserID FirstName

2 个答案:

答案 0 :(得分:1)

要读取列的值,请使用:

 avar = row["colname"];

答案 1 :(得分:0)

而不是:

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

使用:

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

这将只返回您需要的列。

*更新*

对所有属性进行一系列查询绝对不是一个好选择。您可以通过逗号分隔所需的所有列:

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

然后,您可以使用SqlDataReader indexer来获取所需的值:

  var username = objReader["username"];