C# 如何使用SqlDataReader读取数据
我有一个SQL Server 2008数据库,我正在后端处理它。我正在使用asp.net/CC# 如何使用SqlDataReader读取数据,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我有一个SQL Server 2008数据库,我正在后端处理它。我正在使用asp.net/C using (SqlCommand StrQuer = new SqlCommand("SELECT * FROM [shopcart].[dbo].[user] WHERE username=@userid AND password=@password", myconn)) { StrQuer.Parameters.AddWithValue("@userid", str_usr); St
using (SqlCommand StrQuer = new SqlCommand("SELECT * FROM [shopcart].[dbo].[user] WHERE username=@userid AND password=@password", myconn))
{
StrQuer.Parameters.AddWithValue("@userid", str_usr);
StrQuer.Parameters.AddWithValue("@password", str_psd);
SqlDataReader dr = StrQuer.ExecuteReader();
if (dr.HasRows)
{
// MessageBox.Show("loginSuccess");
}
}
我知道读者是有价值的。我的SQL命令是从表中只选择一行。我想一个接一个地阅读阅读器中行中的项目。我该怎么做
谢谢您可以使用dr.Read inside while loop
while(dr.Read())
{
string firstCell = dr[0].ToString();
string secondCell = dr[1].ToString();
// and so on...
}
// It will be better if you close DataReader
dr.Close();
您可以使用FieldCount属性:
if (dr.Read())
{
for (int i = 0; i < dr.FieldCount; i++)
{
var value = dr[i];
// do something
}
}
下面是sqldatareader的完整示例
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = WebConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
SqlCommand myCommand = new SqlCommand();
myCommand.CommandType = CommandType.Text;
myCommand.CommandText = "SELECT CategoryID, CategoryName FROM Categories";
myCommand.Connection = myConnection;
SqlDataReader myReader;
try
{
myConnection.Open();
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
ListItem li = new ListItem();
li.Value = myReader["CategoryID"].ToString();
li.Text = myReader["CategoryName"].ToString();
ListBox1.Items.Add(li);
}
myReader.Close();
}
catch (Exception err)
{
Response.Write("Error: ");
Response.Write(err.ToString());
}
finally
{
myConnection.Close();
}
显然,您可以将变量和强制转换指定给上述适当的类型
请看一下我的问题,另一个解决方案是将ColumnName所在的数据库返回的列的名称放入begin。如果是字符串,则可以使用.ToString。如果它是另一种类型,则需要使用System.convert对其进行转换
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string column = rdr["ColumnName"].ToString();
int columnValue = Convert.ToInt32(rdr["ColumnName"]);
}
您可以使用dr.Read inside while loop。像这样:
while(dr.read())
{
// MessageBox.Show("loginSuccess");
}
简单地使用dr[columnname]这种类型的问题,我不认为应该在这里得到答案,这是一个很糟糕的例子。这里有不少于3个IDisposable资源,您不处理任何资源。请阅读使用说明书。
while(dr.read())
{
// MessageBox.Show("loginSuccess");
}