c#の学習を始めたばかりで、問題なくデータベースにデータを書き込むことができます。しかし、読み取りに問題があり、SQLは正常に実行されますが、保存に問題があります。返されるべき4つの列をどのように保存し、メッセージボックスとして表示するのですか?ありがとう。
SqlCommand myCommand = new SqlCommand("select * from Requests where Complete = 0", myConnection);
SqlDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())
Console.WriteLine(myReader["Username"].ToString());
Console.WriteLine(myReader["Item"].ToString());
Console.WriteLine(myReader["Amount"].ToString());
Console.WriteLine(myReader["Complete"].ToString());
1つの問題は、しばらくするとブレースが欠落することです
while (myReader.Read())
{ // <<- here
Console.WriteLine(myReader["Username"].ToString());
Console.WriteLine(myReader["Item"].ToString());
Console.WriteLine(myReader["Amount"].ToString());
Console.WriteLine(myReader["Complete"].ToString());
} // <<- here
中括弧をスキップすると、各ループで最初の行のみが処理され、残りはループ後に処理され、myReader
は最後の行を過ぎます。
using(){}
ブロックを使用することを忘れないでください:
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand("select * from Requests where Complete = 0", connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader["Username"].ToString());
Console.WriteLine(reader["Item"].ToString());
Console.WriteLine(reader["Amount"].ToString());
Console.WriteLine(reader["Complete"].ToString());
}
}
}
個人的には、4つのプロパティ(名前と型が一致する)を持つクラスを作成し、「dapper」(http://code.google.com/p/dapper-dot-net/)を使用します。
var data = connection.Query<Request>(
"select * from Requests where Complete = 0").ToList();
次のようなもので:
public class Request {
public string Username{get;set;}
...
public bool Complete {get;set;}
}
Dapperは無料でシンプルで、SQLインジェクションを避けるためのパラメーター化があり、非常に高速です。
これらの値を保持するプロパティを持つオブジェクトを作成し、必要に応じてそのオブジェクトを渡します。
public class YourObjectName
{
public string Username { get; set; }
public string Item { get; set; }
public string Amount { get; set; }
public string Complete { get; set; }
}
YourObjectName a = new YourObjectName();
a.Username = Reader['Username'].ToString();
私は少し遅いことを知っていますが、ローカル文字列変数、または文字列配列またはリストを使用してデータベースにデータを挿入し、コンソールの書き込み行で呼び出すことができます