まず:使用パラメータ
第二は:
int memberId = int.Parse(textBox22.Text); // or whatever
DateTime expiry;
using(var command = new SqlCommand(
"select top 1 expirationdate from incomes where memberid='0' or memberid = @memberid order by expirationdate DESC", con))
{
command.Parameters.AddWithValue("memberid", memberId); // again, about 20 ways to do this
expiry = (DateTime)command.ExecuteScalar();
}
textBox17.Text = expiry.ToString("d/M/yyyy"); // or whatever
または "Dapperの" のようなツールでそれをフォーマットしようとする前ExecuteScalar
から値をキャスト:
int memberId = int.Parse(textBox22.Text); // or whatever
var expiry = con.QuerySingle<DateTime>(
"select top 1 expirationdate from incomes where memberid='0' or memberid = @memberid order by expirationdate DESC",
new { memberId });
textBox17.Text = expiry.ToString("d/M/yyyy"); // or whatever
を ' ExecuteScalar'はオブジェクトを返します。適切な型( 'DateTime'?)にキャストしてください。オーバーロードされた 'ToString(s)'を呼び出すことができます。 – sstan
決して。入力をSQLに連結しないでください。 –
良いオレのボビードロップテーブルがあなたを訪問するつもりです。 https://xkcd.com/327/ – rick