を使用し、使用ExecuteReader()
しないでくださいExecuteNonQuery()
。ExecuteNonQuery()
影響を受けた行数のみを返します。
try
{
SqlDataReader dr = cmd1.ExecuteReader();
}
catch (SqlException oError)
{
}
while(dr.Read())
{
string treatment = dr[0].ToString();
}
または、using
ステートメントを使用してください。
using(SqlDataReader dr = cmd1.ExecuteReader())
{
while(dr.Read())
{
string treatment = dr[0].ToString();
}
}
ただし、列SqlCommand
のみを返す場合は、メソッドを使用できます。次のように、最初の行の最初の列を返します。1
ExecuteScalar()
cmd.CommandText = "SELECT treatment FROM appointment WHERE patientid = " + text;
string str = Convert.ToString(cmd.ExecuteScalar());
また、 SQL インジェクションに対してコードを開くこともできます。常にパラメーター化されたクエリを使用します。Jeff は、 Give me parameterized SQL, or give me Deathというクールなブログ記事を書いています。よくお読みください。DotNetPerl SqlParameter の記事もお読みください。SQL インジェクションは、クエリを実行するときに非常に重要です。