如何从数据库读取整行到 C#?
How to read entire row from database to c#?
假设下面的代码 returns 整个结果行:
using (SqlCommand cmdMessages = new SqlCommand("SELECT * FROM Email where Sender = @usernameLog", conn))
{
cmdMessages.Parameters.Add(new SqlParameter("@usernameLog", Sender));
using (SqlDataReader reader = cmdMessages.ExecuteReader())
{
while (reader.Read())
{
Console.Write(); // Receiver's Name which comes from database
Console.Write();// The message which comes from same row as the receiver's name
}
}
}
查询在 SQL 服务器中运行良好。
来自 SQL 服务器的输出:
User hi
我想在控制台中得到相同的输出。
获取所需的列值:
while (reader.Read())
{
reader.GetString(1);
reader.Getstring(2);
}
or
reader.GetString("ColumnName1");
reader.GetString("ColumnName2");
如果您只是想在遍历数据读取器时显示正在检索的值,您可以简单地这样做:
using (SqlCommand cmdMessages = new SqlCommand("SELECT * FROM Email where Sender = @usernameLog", conn))
{
cmdMessages.Parameters.Add(new SqlParameter("@usernameLog", Sender));
using (SqlDataReader reader = cmdMessages.ExecuteReader())
{
int count = reader.FieldCount;
while (reader.Read())
{
for(int i = 0 ; i < count ; i++)
{
Console.WriteLine(reader.GetValue(i));
}
}
}
}
使用int count = reader.FieldCount;
计算您返回的字段数。然后您将使用 for 语句进行迭代。
如果您只想显示 2 个值,只需将 for 替换为:
Console.WriteLine(reader.GetValue(0) + " " + reader.GetValue(1));
假设下面的代码 returns 整个结果行:
using (SqlCommand cmdMessages = new SqlCommand("SELECT * FROM Email where Sender = @usernameLog", conn))
{
cmdMessages.Parameters.Add(new SqlParameter("@usernameLog", Sender));
using (SqlDataReader reader = cmdMessages.ExecuteReader())
{
while (reader.Read())
{
Console.Write(); // Receiver's Name which comes from database
Console.Write();// The message which comes from same row as the receiver's name
}
}
}
查询在 SQL 服务器中运行良好。
来自 SQL 服务器的输出:
User hi
我想在控制台中得到相同的输出。
获取所需的列值:
while (reader.Read())
{
reader.GetString(1);
reader.Getstring(2);
}
or
reader.GetString("ColumnName1");
reader.GetString("ColumnName2");
如果您只是想在遍历数据读取器时显示正在检索的值,您可以简单地这样做:
using (SqlCommand cmdMessages = new SqlCommand("SELECT * FROM Email where Sender = @usernameLog", conn))
{
cmdMessages.Parameters.Add(new SqlParameter("@usernameLog", Sender));
using (SqlDataReader reader = cmdMessages.ExecuteReader())
{
int count = reader.FieldCount;
while (reader.Read())
{
for(int i = 0 ; i < count ; i++)
{
Console.WriteLine(reader.GetValue(i));
}
}
}
}
使用int count = reader.FieldCount;
计算您返回的字段数。然后您将使用 for 语句进行迭代。
如果您只想显示 2 个值,只需将 for 替换为:
Console.WriteLine(reader.GetValue(0) + " " + reader.GetValue(1));