データベースに格納するデータを配列に格納しようとしていますが、SqlDataReader
は、ORDER BY DESC
またはASC
を使用すると最後または最初のいずれかの行を読み取ります。C#SqlDataReaderは1行だけを読み取る
コード:
private void chkAdr()
{
string connStr = "Data Source=MARINCHI\\SQLEXPRESS;Initial Catalog=login1;Integrated Security=True";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand getAdr = new SqlCommand("SELECT adress, floor,city, state, country, zipcode FROM userAdress where userID = @userID", conn);
SqlParameter parUserID = new SqlParameter("@userID", Login.id);
getAdr.Parameters.Add(parUserID);
getAdr.ExecuteNonQuery();
SqlDataReader dr = getAdr.ExecuteReader();
string[] adress = new string[100];
string[] floor = new string[100];
string[] city = new string[100];
string[] state = new string[100];
string[] country = new string[100];
string[] zipcode = new string[100];
while (dr.Read())
{
int count = dr.FieldCount;
for (int i = 0; i < count; i++)
{
adress[i] = dr["adress"].ToString();
floor[i] = dr["floor"].ToString();
city[i] = dr["city"].ToString();
state[i] = dr["state"].ToString();
country[i] = dr["country"].ToString();
zipcode[i] = dr["zipcode"].ToString();
}
// test to see, what values I get, no matter what adress[i] for I any number, always get the last data from my table in sql...
textBox5.Text = adress[0];
textBox6.Text = floor[0];
textBox7.Text = city[0];
textBox8.Text = state[1];
textBox9.Text = country[1];
textBox10.Text = zipcode[1];
}
dr.Close();
}
私はdr.HasRows
を試みたが、それは本当に私のために動作しませんでした、と私はGoogleで検索し、すべての組み合わせを試してみましたが、何も動いていないようにみえ、私はそれがで動作するように取得することはできません最後の行まで懇願してください。
これは、ユーザーが自分のアドレスを追加した場合にデータベースからアドレスを取得するためのコードのコンポーネントである必要があります。実際に終了すると、コンボボックスにオプション "Saved address 1 "をクリックすると、テキストボックスに表示されます。 2つのアドレスがある場合も同じで、どちらも追加する必要があります。
SqlDataReader
は最後の行または最初の行のみを読み取るため、ユーザーが追加したすべてのアドレスを読み取ることはできません。誰かが私にこれを行う方法について考えている場合は、助けてください!ありがとう!
をなぜあなたはは、ExecuteNonQueryを実行し、その後のExecuteReaderていますか? – hardkoded
ExecuteNonQueryは、SQLコマンドの実行に使用されるパラメータを使用して、データベースからデータを読み取り、配列にemを格納できるようにreaderを実行します。 – Rin
getAdr.ExecuteNonQuery()を呼び出す必要はありません.ExecuteReaderは十分です。 – hardkoded