2016-08-03 8 views
0

どのように私のストアドプロシージャを実行しますか。 私はSQLから直接それを実行する際の手順は動作しますが、それは私が私のタブレットからそれを行う際には動作しませんpreparestatementからstoredprocedureを実行する方法

String itemshelf = DBshelf;// edittext for putting in values on set 
String itemcard = DBcard;// edittext for putting in values on where 
PreparedStatement preparedStatement = con.prepareStatement("EXEC [dbo].[spUpd_Location]"); 
         preparedStatement.executeUpdate(); 

私のストアドプロシージャ

ALTER PROCEDURE [dbo].[spUpd_Location] 
    @itemshelf nvarchar(1000)=NULL 
, @itemcard nvarchar(1000)=NULL 
AS 
SET NOCOUNT ON 
UPDATE PS 
SET [ShelfNumber][email protected] 
FROM [file].[ItemPart] PS 
JOIN [file].[Item] P ON P.[id] = PS.[id] 
where [ItemNumber][email protected] 
+0

このエラーは何ですか? executeUpdateは直接更新ではないように見えます –

+0

エラーは発生しませんが、データベースの値は変更されません –

+0

@itemcardはNULLなので、すべての行に対して同等テストがfalseになっています。 (あなたがnullを使用するとNULLを使用する等価が必要な場合) –

答えて

1

二つの引数を期待しているあなたのストアドプロシージャましたあなたは準備された声明に供給する必要があります。あなたのSQLは引数のプレースホルダを必要とし、引数はPreparedStatementオブジェクトで設定する必要があります。あなたのコードは次のようになります:

String itemshelf = DBshelf;// edittext for putting in values on set 
String itemcard = DBcard;// edittext for putting in values on where 
PreparedStatement preparedStatement = con.prepareStatement("EXEC [dbo].[spUpd_Location] ?, ?;"); 
preparedStatement.setString(1, itemshelf); 
preparedStatement.setString(2, itemcard); 
preparedStatement.executeUpdate(); 
+0

私は無効なパラメータインデックス1 –

+0

SQLステートメントには、問題の可能性があるストアドプロシージャ名(修正のために編集された)に括弧がありませんでした。 –

+0

似たような[質問](http://stackoverflow.com/questions/6113674/how-do-i-execute-a-ms-sql-server-stored-procedure-in-java-jsp-returning-table- d)それは助けるかもしれません。 また、ストアドプロシージャは何も返すようには見えないので、 'executeUpdate'はたぶん' execute'でなければなりません。 –

関連する問題