2012-03-26 3 views
0

次のコードがあります。基本的にjsf形式から提出されたデータを処理し、データベースのテーブルにデータを挿入しようとします。今私たちがインストールしたデータベースはかなり古いです...それはSQL Server 2000ですので、jtdsをドライバとして使用しました。コード:Java PreparedStatementエラー

public void dbConnect(String db_connect_string, 
      String db_userid, 
      String db_password) 
    { 
     try { 
     Class.forName("net.sourceforge.jtds.jdbc.Driver"); 
     Connection conn = DriverManager.getConnection(db_connect_string, 
        db_userid, db_password); 
     System.out.println("connected"); 
     dateSubmitted = "dasdasd"; 
     /*HERE THE STATEMENTS TO INSERT*/ 
     java.sql.PreparedStatement insertData = null; 
     String insertStatement = "INSERT INTO SLMDATA VALUES(?,?,?,?,?,?,?,?,?,?," 
       + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
     insertData = conn.prepareStatement(insertStatement); 
     insertData.setString(1, serviceLogger); 
     insertData.setString(2, dateSubmitted); 
     insertData.setString(3, serviceName); 
     insertData.setString(4, department); 
     insertData.setString(5, division); 
     insertData.setString(6, businessServiceDescription); 
     insertData.setString(7, technicalServiceDescription); 
     insertData.setString(8, serviceCustomer); 
     insertData.setString(9, serviceCriticality); 
     insertData.setString(10, serviceRequestSystem); 
     insertData.setString(11, serviceCategory); 
     insertData.setString(12, serviceHours); 
     insertData.setString(13, availabilityTarget); 
     insertData.setString(14, lowIncidentResponseScale); 
     insertData.setString(15, lowIncidentResponseHrsType); 
     insertData.setString(16, lowResponseTimeText); 
     insertData.setString(17, mediumIncidentResponseScale); 
     insertData.setString(18, mediumIncidentResponseHrsType); 
     insertData.setString(19, mediumResponseTimeText); 
     insertData.setString(20, highIncidentResponseScale); 
     insertData.setString(21, highIncidentResponseHrsType); 
     insertData.setString(22, highResponseTimeText); 
     insertData.setString(23, lowIncidentResolutionScale); 
     insertData.setString(24, lowIncidentResolutionHrsType); 
     insertData.setString(25, lowResolutionTimeText); 
     insertData.setString(26, mediumIncidentResolutionScale); 
     insertData.setString(27, mediumIncidentResolutionHrsType); 
     insertData.setString(28, mediumResolutionTimeText); 
     insertData.setString(29, highIncidentResolutionScale); 
     insertData.setString(30, highIncidentResolutionHrsType); 
     insertData.setString(31, highResolutionTimeText); 
     insertData.setString(32, blockTime); 
     insertData.setString(33, impactedServices); 
     insertData.setString(34, operationalDependencies); 
     insertData.setString(35, disasterAvailable); 
     insertData.setString(36, configurationItems); 
     insertData.executeUpdate(); 

     conn.close(); 
     FacesContext.getCurrentInstance().getExternalContext().dispatch("thankyou.xhtml"); 

     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 


    public void callConnection(){ 

     dbConnect("jdbc:jtds:sqlserver://host;", "username", 
        "password"); 
    } 

とGlassFishサーバのコンソール出力が示す:

ます。java.sql.SQLException:無効なオブジェクト名 'SLMDATA'。

SLMDATAはテーブル名ですが、正しいことを確認してください。私がブレークポイント機能を介してコードをステップ実行すると、executeQueryまで到達してから、制御が外れます。すべての変数の内容を調べましたが、すべて有効です。何が起こっているか考えてみませんか?これにしばらくお待ちください

+1

可能な重複:[ここ](http://stackoverflow.com/questions/909599/java-mssql-java-sql-sqlexception-invalid-object-name-tablename)と[there](http:// stackoverflow .com/questions/6647846/invalid-object-name) - 単純な 'SELECT * FROM SLMDATA'を試して、同じエラーが出るかどうかを調べることができます。 – assylias

+0

ありがとうございました@assylias:Dは本当に感謝し、その1つを見落として申し訳ありません:) –

答えて

1

スキーマ名をテーブルschemaName.tableの前に置くか、スキーマのDBに同義語を作成してください。

関連する問題