sqlreaderに問題があります。列内のすべてのレコードを表示する必要がある場合にのみ、最初の結果が表示されます。 私はこのサイトを徹底的に検索しましたが、すべての回答が私にとってうまくいかないようです。sqlReaderで複数の結果を取得
str2 = "SELECT CPU FROM Clients";
connection = new SqlConnection(str);
connection.Open();
command = new SqlCommand(str2, connection);
reader = command.ExecuteReader();
try
{
while (reader.Read())
{
num = 0;
string col1Value = reader[0].ToString();
if (reader.HasRows)
{
enumerator = reader.GetEnumerator();
record = (DbDataRecord)enumerator.Current;
if (j.Connect(out j))
{
//string col1Value = reader[0].ToString();//str3 = reader["CPU"].ToString();
num += 1;
MessageBox.Show(col1Value);
if (col1Value == j.GetCPUKey())
{
this.j.XNotify("Connected! Welcome: " + j.GetCPUKey());
MessageBox.Show(col1Value);
connection.Close();
CheckAuth();
break;
}
else
{
MessageBox.Show("You Are Not Authorised!");
connection.Close();
}
if (!j.Connect(out j))
{
MessageBox.Show("Could Not Connect to Default Console");
connection.Close();
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("" + ex);
Environment.Exit(0);
connection.Close();
}
が助けてください: はここに私のコードです。
ループ内で接続を閉じるのはなぜですか?接続を閉じる...それは接続を閉じます=それ以上のデータは閉じません。また、リレーショナルデータベースは、列にレコードを表示するのではなく、レコードに列を表示することによって機能します。 'j'とは何ですか?またwhileループの中で 'reader.HasRows'がなぜwhileループにあるかのように、これは常に最初のレコードを指しているので、これは常に真です? – Igor
接続が閉じていなくても、まだ1つの行が表示されます。 jは私が使用している図書館のものですが、読者とは関係ありません。 – Liam
SqlReader.Readのドキュメントを参照し、利用可能な次のレコードにリーダーを進め、trueを返します。レコードがない場合はfalseを返します。それはループ内でリーダーが進化したことを意味します – Igor