質問
私の保存と編集の一部の分野のデータベースには長い文字列の一つ以上の文が書かれています。また入単一引用符のテキストボックスおよび保存したいのですが例外をスローしよう "誤った書式]近'l'.閉じてクォーテーションの後に文字列"." あるあらゆるアイデアを回避す。
編集: の問い合わせ:
SqlCommand com = new SqlCommand("UPDATE Questions SET Question = '[" +
tbQuestion.Text + "]', Answer = '[" +
tbAnswer.Text + "]', LastEdit = '" +
CurrentUser.Login +
"'WHERE ID = '" + CurrentQuestion.ID + "'");
解決
としてのキロ、 ない。
い この 代わり:
private static void UpdateQuestionByID(
int questionID, string question, string answer, string lastEdited)
{
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
const string QUERY =
@"UPDATE Questions " +
@"SET Question = @Question, Answer = @Answer, LastEdit = @LastEdited " +
@"WHERE ID = @QuestionID";
using (var cmd = new SqlCommand(QUERY, conn))
{
cmd.Parameters.AddWithValue("@Question", question);
cmd.Parameters.AddWithValue("@Answer", answer);
cmd.Parameters.AddWithValue("@LastEdited", lastEdited);
cmd.Parameters.AddWithValue("@QuestionID", questionID);
cmd.ExecuteNonQuery();
}
}
}
他のヒント
を含めたい場合は単一引用符、SQL分野、エスケープを使ってシングルクォーテーション
'''Test''' = 'Text'
これはSQLサーバーです。
書き保存produreい分野の編集、SQLのパラメータを保存する値です。引用符なします。行わない場合は、格納され,少なくともをSQLテキストとパラメータの標示及び利用のSQL型のパラメータ。
を行うことが困難ない特定の答えできないリストのデータベースまたは応用言語ります。
できなビルごSQL的に見積りのスティングは解釈としての末尾に文字列になります。によってデータベースを使用しており、エスケープする必要がありますシングルクォーテーション内の文字列までのお客様にご利用のsqlコマンドです。この見学することができます印刷検索する前に試してみてくださいます。
いについては記載しないアプリごとにデータベースからだけではなく構築すコマンドを利用する必要がありFIX_QUOTES()コマンドが書きましたがって出してください言語:
SqlCommand com = new SqlCommand("UPDATE Questions SET Question = '[" + FIX_QUOTES(tbQuestion.Text) + "]', Answer = '[" + FIX_QUOTES(tbAnswer.Text) + "]', LastEdit = '" + FIX_QUOTES(CurrentUser.Login) + "'WHERE ID = '" + FIX_QUOTES(CurrentQuestion.ID) + "'"); – A
このタイプの場合は非常に簡単に sqlインジェクション攻撃. でおすすめの呼び出しデータベースと保存の手順またはパラメータ一覧です。
に指定できるダブルお見積:
my dodg'y test -> 'my dodg''y test'
my 'quoted' string -> 'my ''quoted string'''
'first and last quotes' -> '''first and last quotes'''
一部は既に述を追加する見積もり致します。が確認でき、この場合にはオラクル(その他この回答の有効期限を指定し、SQLサーバー).と思いを用いること保管手続きは漏れる。