1

Sql Server Express データベースに値を挿入するために、パラメーター化された更新クエリを作成しようとしています。私が書いたクエリは次のとおりです。

Dim cmd As New SqlCommand
cmd.Connection = conn
cmd.CommandText = "update tblposts set title=@ptitle, pdate=@pd, 
                   content=@pcontent where pid=@p"
cmd.Parameters.AddWithValue("ptitle", txtTitle.Text)
cmd.Parameters.AddWithValue("pcontent", txtcontent.InnerText)
cmd.Parameters.AddWithValue("pd", DateTime.Now.ToString)
cmd.Parameters.AddWithValue("p", postid)

を実行するcmd.ExecuteNonQueryと、影響を受ける行数が 1 になりますが、変更がデータベースに反映されません。

を使用してクエリを印刷するDebug.Writeと、パラメーター値ではなく、パラメーター自体の名前 (つまり、@pcontent、@title など) でクエリが取得されます。

ここで間違いは何ですか?

4

1 に答える 1

4

パラメータの前に@記号AddWithValueを含める必要があるので、次のようにします。

cmd.Parameters.AddWithValue("@ptitle", txtTitle.Text)
cmd.Parameters.AddWithValue("@pcontent", txtcontent.InnerText)
cmd.Parameters.AddWithValue("@pd", DateTime.Now.ToString)
cmd.Parameters.AddWithValue("@p", postid)

正しく実行されていると思いますが、句が空白であるため、空白行を更新している可能性があります。

とにかく、上記を試してみてください。期待どおりに更新されるはずです。

編集して追加

CommandTextは常に のみが@value含まれ、パラメーター値が文字列に代入されることはありません。

cmd.Parameters値を書き出すには、コレクションをループする必要があります。

于 2012-11-19T11:53:53.760 に答える