簡體   English   中英

我用java和sql數據庫做錯了什么?

[英]what did I do wrong with java and sql database?

我正在嘗試使用jdbc:derby數據庫創建一個表。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

public class DBCONNECT {

    Connection con;

    public DBCONNECT()
    {
        connect();
    }

    private void connect()
    {
        try {             
            con= DriverManager.getConnection("jdbc:derby:relative/db/dubbydata.db;create=true;","APP","");
            PreparedStatement st= con.prepareStatement("SELECT * FROM WF");
            ResultSet res=st.executeQuery();
            while(res.next()){}
            st.close();
            System.out.println("dubbyloop.DBCONNECT.connect()");
        } catch (SQLException ex) {          
            try { 
                 Statement stmt = con.createStatement();
                 stmt.executeQuery("CREATE TABLE WF (FILEPATH CHAR(254) NOT NULL, FILESIZE LONG VARCHAR, WFDATA CLOB(2147483647), PRIMARY KEY (FILEPATH));");
                 System.out.println("CREATED");
            } catch (SQLException ex1) {
                Logger.getLogger(DBCONNECT.class.getName()).log(Level.SEVERE, null, ex1);
            }

            System.out.println(ex);
        }
    }



}

但我總是得到這個錯誤:

SCHWERWIEGEND: null
java.sql.SQLSyntaxErrorException: Syntaxfehler: Encountered ";" at line 1, column 118.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)
    at myproject.DBCONNECT.connect(DBCONNECT.java:48)

我不知道我做錯了什么。 我改變了創建查詢中的所有內容。我刪除了semikolon.i刪除了Clob甚至整個Clob的大小。無論我做什么我總是得到同樣的錯誤,不知道出了什么問題。

    stmt.executeUpdate("CREATE TABLE WF ("
            + "FILEPATH VARCHAR(254) NOT NULL, "
            + "FILESIZE LONG, "
            + "WFDATA CLOB(2147483647), "
            + "PRIMARY KEY (FILEPATH))");

有一個VARCHAR太多,不需要分號。 CHAR填充空白,因此更好的VARCHAR。

@MickMnemonic正確地提到應該調用executeUpdate而不是executeQuery。

(例如PRIMARY KEY之前的逗號)? 否則 - 一般調試策略:1)找到錯誤的sql語句行(逐個注釋)2)debug-print結果語句3)對目標數據庫進行檢查

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM