DbCommand
次のようなものを実行するように定義されている場合:
SELECT Column1 FROM Table1
List<String>
返されたレコードを生成する最良の方法は何ですか?
私はVS2005を使用しているため、Linqなどはありません。
DbCommand
次のようなものを実行するように定義されている場合:
SELECT Column1 FROM Table1
List<String>
返されたレコードを生成する最良の方法は何ですか?
私はVS2005を使用しているため、Linqなどはありません。
これがあなたが探しているものだと思います。
List<String> columnData = new List<String>();
using(SqlConnection connection = new SqlConnection("conn_string"))
{
connection.Open();
string query = "SELECT Column1 FROM Table1";
using(SqlCommand command = new SqlCommand(query, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
columnData.Add(reader.GetString(0));
}
}
}
}
テストされていませんが、これは正常に動作するはずです。
アイテムをループしてコレクションに追加します。Add
メソッドを使用できます
List<string>items=new List<string>();
using (var con= new SqlConnection("yourConnectionStringHere")
{
string qry="SELECT Column1 FROM Table1";
var cmd= new SqlCommand(qry, con);
cmd.CommandType = CommandType.Text;
con.Open();
using (SqlDataReader objReader = cmd.ExecuteReader())
{
if (objReader.HasRows)
{
while (objReader.Read())
{
//I would also check for DB.Null here before reading the value.
string item= objReader.GetString(objReader.GetOrdinal("Column1"));
items.Add(item);
}
}
}
}
すべての列をクエリしたい場合
List<Users> list_users = new List<Users>();
MySqlConnection cn = new MySqlConnection("connection");
MySqlCommand cm = new MySqlCommand("select * from users",cn);
try
{
cn.Open();
MySqlDataReader dr = cm.ExecuteReader();
while (dr.Read())
{
list_users.Add(new Users(dr));
}
}
catch { /* error */ }
finally { cn.Close(); }
ユーザーのコンストラクターは、すべての「dr.GetString(i)」を実行します。
返されるデータは文字列です。別のデータ型にキャストできます。
(from DataRow row in dataTable.Rows select row["columnName"].ToString()).ToList();
このバージョンは @Dave Martin と同じ目的を持っていますが、よりクリーンで、すべての列を取得し、メールやビューなどに配置したくない場合はデータを簡単に操作できます。
List<string> ResultSet = new List<string>();
using (SqlConnection connection = DBUtils.GetDBConnection())
{
connection.Open();
string query = "SELECT * FROM DATABASE";
using (SqlCommand command = new SqlCommand(query, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
var rec = new List<string>();
for (int i = 0; i <= reader.FieldCount - 1; i++)
{
rec.Add(reader.GetString(i));
}
string combined = string.Join("|", rec);
ResultSet.Add(combined);
}
}
}
}