0

テーブルのフィールドを nvarchar(max) としてデータベースに質問を挿入しようとしています (SQL Server 2008 r2)

コードは次のとおりです。

Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
    gc.ExecuteCommand("insert into QuestionMaster values('" & txtQuestion.Text & "','" & ViewState("ClientID") & "','" & ViewState("KioskID") & "')")
    Response.Write("<script type='text/javascript' language='javascript'>alert('Question Added Sucessfully!!!')</script>")
    BindGrid()
End Sub

で任意の文字列を挿入すると:

what's your name? 

それは私にエラーを与えます:

「s」付近の構文が正しくありません。文字列 ')' の後の閉じていない引用符。

文字列を次のように指定するだけの場合:

What is your name?

その後、エラーは発生しません。

私を助けてください。

4

6 に答える 6

3

データに単一引用符などの特殊文字が含まれている可能性があり、ステートメントが失敗する可能性があります。

したがって、パラメーター化されたクエリを使用する方が適切です。パラメーター化されたクエリは、SQL クエリを実行する前に引数の適切な置換を行います。

SqlCommand insertNewAreaPath = new SqlCommand(
    "insert into QuestionMaster (Question, ClientID, KioskID) VALUES(@Question, @ClientID, @KioskID)", con);
insertNewAreaPath.Parameters.Add("@Question", txtQuestion.Text);
insertNewAreaPath.Parameters.Add("@ClientID", ViewState("ClientID"));
insertNewAreaPath.Parameters.Add("@KioskID", ViewState("KioskID"));
insertNewAreaPath.ExecuteNonQuery();

ELSE: 使用.Replace("'", "''")

gc.ExecuteCommand("insert into QuestionMaster values('" & txtQuestion.Text.Replace("'", "''") & "','" & ViewState("ClientID") & "','" & ViewState("KioskID") & "')")
于 2013-07-24T06:22:41.153 に答える
0
//declare this variable

String sql="insert into QuestionMaster values('" & txtQuestion.Text & "','" & ViewState("ClientID") & "','" & ViewState("KioskID") & "')";

デバッグすると、どこに問題があるかがわかります。

于 2013-07-24T06:23:50.240 に答える