从SqlDataReader中读取数据

180
我有一个 SQL Server 2008 数据库,我正在后台进行工作。我正在使用 ASP.NET/C# 进行开发。
SqlDataReader rdr = cmd.ExecuteReader();  
while (rdr.Read())  
{              
   //how do I read strings here????  
}

我知道读者有价值观。我的SQL命令是从表中选择只有1列。该列仅包含字符串。我想逐行读取读者中的字符串(行)。我该如何做到这一点?
13个回答

7
你需要在这里读取数据库列。你可以查看以下代码片段来实现:
string connectionString = ConfigurationManager.ConnectionStrings["NameOfYourSqlConnectionString"].ConnectionString;
using (var _connection = new SqlConnection(connectionString))
{
    _connection.Open();

    using (SqlCommand command = new SqlCommand("SELECT SomeColumnName FROM TableName", _connection))
    {

        SqlDataReader sqlDataReader = command.ExecuteReader();
        if (sqlDataReader.HasRows)
        {
            while (sqlDataReader.Read())
            {
                string YourFirstDataBaseTableColumn = sqlDataReader["SomeColumn"].ToString(); // Remember Type Casting is required here it has to be according to database column data type
                string YourSecondDataBaseTableColumn = sqlDataReader["SomeColumn"].ToString();
                string YourThridDataBaseTableColumn = sqlDataReader["SomeColumn"].ToString();

            }
        }
        sqlDataReader.Close();
    }
    _connection.Close();
}

4

我通常通过数据读取器这种方式读取数据,这里提供一个小例子。

string connectionString = "Data Source=DESKTOP-2EV7CF4;Initial Catalog=TestDB;User ID=sa;Password=tintin11#";
string queryString = "Select * from EMP";

using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(queryString, connection))
            {
                connection.Open();

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
                        }
                    }
                    reader.Close();
                }
            }

3

我有一个如下的辅助函数:

  public static string GetString(object o)
    {
        if (o == DBNull.Value)
            return "";

        return o.ToString();
    }

然后我使用它来提取字符串:
 tbUserName.Text = GetString(reader["UserName"]);

1
标准的Convert.ToString(o)也是一样的,因为DBNull是IConvertible类型,而DBNull.ToString()返回string.Empty。 - nzeemin
你说得对,但我不确定在我发布这篇文章时是否已经这样做了。 - JBrooks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接