我有一个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);
StrQuer.Parameters.AddWithValue("@password", str_psd);
SqlDataReader dr = StrQuer.ExecuteReader();
if (dr.HasRows)
{
// MessageBox.Show("loginSuccess");
}
}
我知道读者有价值观。我的SQL命令是从表中只选择一行。我想逐一阅读读者行中的项目。我该怎么做?
由于
答案 0 :(得分:1)
你可以在循环中使用dr.Read()。
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();
答案 1 :(得分:1)
您可以使用FieldCount
属性:
if (dr.Read())
{
for (int i = 0; i < dr.FieldCount; i++)
{
var value = dr[i];
// do something
}
}
答案 2 :(得分:1)
if (dr.HasRows)
{
dr["NameOfColumn"].ToString();
}
你显然将变量和强制转换为上面适当的类型。
在这里看看我的问题,另一个解决方案Casting Ado.net DataReader to IDataRecord giving strange result
答案 3 :(得分:1)
您可以在while循环中使用dr.Read()
。像这样:
while(dr.read())
{
// MessageBox.Show("loginSuccess");
}
答案 4 :(得分:0)
以下是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();
}
答案 5 :(得分:0)
将从ColumnName所在的数据库返回的列的名称开头。如果是字符串,则可以使用.ToString()。如果是另一种类型,则需要使用System.Convert进行转换。
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string column = rdr["ColumnName"].ToString();
int columnValue = Convert.ToInt32(rdr["ColumnName"]);
}