-4

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 コマンドは、テーブルから 1 行だけを選択することです。リーダーの行の項目を 1 つずつ読み上げたい。どうすればいいですか?

ありがとう

4

6 に答える 6

2

FieldCount次のプロパティを使用できます。

if (dr.Read())
{
    for (int i = 0; i < dr.FieldCount; i++)
    {
        var value = dr[i];
        // do something
    }
}
于 2013-08-01T10:57:38.567 に答える
1
if (dr.HasRows)
{
    dr["NameOfColumn"].ToString();    
}

明らかに変数を割り当て、上記の適切な型にキャストします。

ここでも私の質問を見てください。別の解決策として、Ado.net DataReader を IDataRecord にキャストすると奇妙な結果が得られます

于 2013-08-01T10:59:05.637 に答える
1

dr.Read()while ループ内で使用できます。このような :

while(dr.read())
{
    // MessageBox.Show("loginSuccess");    
}
于 2013-08-01T11:03:13.010 に答える
1

while ループ内で 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();
于 2013-08-01T10:57:27.013 に答える
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();  
        }  
于 2013-08-01T10:59:01.700 に答える