2012-03-16 34 views
1

データベースとしてMS SQL Server 2008を使用してJavaアプリケーションを開発しました。 MicrosoftのWebサイトで入手できるJDBCドライバを使用しています。不適切な構文 'Contribution'の近く

これまではうまくいきました。しかし、負荷が増えるにつれ、SQLServerExceptionが多数発生しました。

クエリが

INSERT INTO ANSWERS VALUES ('pd','GK002','A','B','','','Yes','QUIZ012') 

例外は、私はどこでも私のクエリ内の単語 'の貢献' を使用していない

com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'Contribution'. 
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197) 
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1493) 
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:775) 
    at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:676) 
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575) 
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400) 
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179) 
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154) 
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeUpdate(SQLServerStatement.java:633) 
    at nina.dbinterface.FinalDBInteraction.updateUserAnswers(FinalDBInteraction.java:93) 
    at nina.dbinterface.FinalDBInteraction.updateDatabase(FinalDBInteraction.java:43) 
    at nina.user.ui.MainWindow.submitQuiz(MainWindow.java:1032) 
    at nina.user.ui.MainWindow.actionPerformed(MainWindow.java:917) 

です。それではなぜこのエラー?どんな解決策ですか?

+0

データベースに "貢献" と呼ばれる何か? Answersテーブルのトリガー? –

+1

これは例外の原因となった実際のクエリですか?私はSQLの注入を疑う。 – Oliv

答えて

1

これらのエラーが発生しているときにデータベースに対して実行されているSQLバッチをキャプチャするには、profiler traceを実行することをお勧めします。

コマンドがSQL Serverにどのように送信されているかを正確に把握していないと(たとえば、ストアドプロシージャ、アプリケーションのインラインSQL、ORMや他の「ミドルウェア」、動的SQLなどを使用)答えを出す。

乾杯、 デイブ