显示数据库中的数据,但不指定列
本文关键字:数据库 数据 显示 | 更新日期: 2023-09-27 17:50:21
我有一个简单的登录页面。我想要做的是,当登录是正确的,我想要显示所有列-我不想手动指定在while循环中显示哪些列。
这是一个例子,我在c#中使用SQL Server 2008 express:
private void Authenticate(string userName, string password)
{
string connString = "server=.''sqlexpress; database=TestDatabase; trusted_connection=true";
SqlConnection conn = new SqlConnection(connString);
conn.Open();
string sqlCommand = "select * from Registration where UserName='" + userName + "' and Password='" + password + "'";
SqlCommand command = conn.CreateCommand();
command.CommandText = sqlCommand;
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
lblResult.Text += reader["CourseId"] + " " + reader["CourseName"] + " " + reader["Instructor"] + "<br />";
}
}
我知道这不是最好的实现。
我如何用注册表返回的所有内容填充lblResult ?
StringBuilder sb = new StringBuilder(1024); /* arbitrary size */
while (reader.read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
sb.Append(reader.GetName(i));
sb.Append(": ");
sb.Append(reader[i]);
}
sb.Append("<br />");
}
lblResult.Text = sb.ToString();
类似的东西,基于MSDN文档
SqlDataReader
有一个名为FieldCount
的属性,它告诉您返回了多少个字段,然后您只需使用该知识遍历Items索引。我也会使用StringBuilder
来构建结果字符串,而不是连接字符串来提高性能。像这样:
var str = new StringBuilder()
while (reader.Read())
{
for(int i=0; i<reader.FieldCount ; i++)
{
str.Append(reader[i].ToString());
str.Append(" ");
}
str.Append("<br/>");
}
lblResult.Text = str.ToString();