簡體   English   中英

JDBC和數據庫集成錯誤

[英]JDBC and Database Integration Error

我一直在嘗試將數據庫的信息更改為其他信息,例如,在數據庫代碼中,有50位信息輸入到STATES值中,當我在其中運行JDBC代碼以返回那里有多少行信息時是,它可以工作並返回50行。 但是我想將此數字從50降低到30,但是會發生錯誤,而且我不知道如何在不發生錯誤的情況下執行此操作。 這可能是那么基本的東西,但我無法找到正確的方法,而不會發生錯誤。 任何幫助將不勝感激,如果很難理解我到底要什么,對不起,但這是我能解釋的最好方法

我不得不刪掉其余的代碼,因為它看起來非常混亂。 這是我遇到麻煩的一些數據庫代碼:

SET DATABASE SQL TYPES FALSE
SET DATABASE SQL TDC DELETE TRUE
SET DATABASE SQL TDC UPDATE TRUE
SET DATABASE SQL TRANSLATE TTI TYPES TRUE
SET DATABASE SQL CONCAT NULLS TRUE
SET DATABASE SQL NULLS FIRST TRUE
SET DATABASE SQL UNIQUE NULLS TRUE
SET DATABASE SQL CONVERT TRUNCATE TRUE
SET DATABASE SQL AVG SCALE 0
SET DATABASE SQL DOUBLE NAN TRUE
SET DATABASE SQL LONGVAR IS LOB FALSE
SET DATABASE TRANSACTION CONTROL LOCKS
SET DATABASE DEFAULT ISOLATION LEVEL READ COMMITTED
SET DATABASE TRANSACTION ROLLBACK ON CONFLICT TRUE
SET DATABASE TEXT TABLE DEFAULTS ''
SET FILES WRITE DELAY 20
SET FILES BACKUP INCREMENT FALSE
SET FILES CACHE SIZE 10000
SET FILES CACHE ROWS 50000
SET FILES SCALE 1
SET FILES LOB SCALE 32
SET FILES DEFRAG 0
SET FILES NIO TRUE
SET FILES NIO SIZE 256
SET FILES LOG TRUE
SET FILES LOG SIZE 200
CREATE USER SA PASSWORD ""
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
SET SCHEMA PUBLIC

CREATE MEMORY TABLE PUBLIC.EXPLORERS(EXPLORERID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,FIRSTNAME VARCHAR(50),LASTNAME VARCHAR(50),DOB DATE,EMAIL VARCHAR(100),ADDRESS VARCHAR(100),CITY VARCHAR(50),STATE VARCHAR(2),ZIPCODE VARCHAR(10),USERNAME VARCHAR(15),PASSWORD VARCHAR(10),TOURS VARCHAR(29),BIO VARCHAR(4096))
ALTER TABLE PUBLIC.EXPLORERS ALTER COLUMN EXPLORERID RESTART WITH 4

CREATE MEMORY TABLE PUBLIC.STATES(STATEID VARCHAR(2) NOT NULL PRIMARY KEY,STATENAME VARCHAR(29)

ALTER SEQUENCE SYSTEM_LOBS.LOB_ID RESTART WITH 1
SET DATABASE DEFAULT INITIAL SCHEMA PUBLIC
GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.YES_OR_NO TO PUBLIC
GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.TIME_STAMP TO PUBLIC
GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.CARDINAL_NUMBER TO PUBLIC
GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.CHARACTER_DATA TO PUBLIC
GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.SQL_IDENTIFIER TO PUBLIC
GRANT DBA TO SA
SET SCHEMA PUBLIC

INSERT INTO STATES VALUES('AK','Alaska')
INSERT INTO STATES VALUES('AL','Alabama')
INSERT INTO STATES VALUES('AR','Arkansas')
INSERT INTO STATES VALUES('AZ','Arizona')
INSERT INTO STATES VALUES('CA','California')
INSERT INTO STATES VALUES('CO','Colorado')
INSERT INTO STATES VALUES('CT','Connecticut')
INSERT INTO STATES VALUES('DC','District of Columbia')
INSERT INTO STATES VALUES('DE','Delaware')
INSERT INTO STATES VALUES('FL','Florida')
INSERT INTO STATES VALUES('GA','Georgia')
INSERT INTO STATES VALUES('HI','Hawaii')
INSERT INTO STATES VALUES('IA','Iowa')
INSERT INTO STATES VALUES('ID','Idaho')
INSERT INTO STATES VALUES('IL','Illinois')
INSERT INTO STATES VALUES('IN','Indiana')
INSERT INTO STATES VALUES('KA','Kansas')
INSERT INTO STATES VALUES('KY','Kentucky')
INSERT INTO STATES VALUES('LA','Louisiana')
INSERT INTO STATES VALUES('MA','Massachusetts')
INSERT INTO STATES VALUES('MD','Maryland')
INSERT INTO STATES VALUES('ME','Maine')
INSERT INTO STATES VALUES('MI','Michigan')
INSERT INTO STATES VALUES('MN','Minnesota')
INSERT INTO STATES VALUES('MO','Missouri')
INSERT INTO STATES VALUES('MT','Montana')
INSERT INTO STATES VALUES('NC','North Carolina')
INSERT INTO STATES VALUES('ND','North Dakota')
INSERT INTO STATES VALUES('NE','Nebraska')
INSERT INTO STATES VALUES('NH','New Hampshire')
INSERT INTO STATES VALUES('NJ','New Jersey')
INSERT INTO STATES VALUES('NM','New Mexico')
INSERT INTO STATES VALUES('NV','Nevada')
INSERT INTO STATES VALUES('NY','New York')
INSERT INTO STATES VALUES('OH','Ohio')
INSERT INTO STATES VALUES('OK','Oklahoma')
INSERT INTO STATES VALUES('OR','Oregon')
INSERT INTO STATES VALUES('PA','Pennsylvania')
INSERT INTO STATES VALUES('RI','Rhode Island')
INSERT INTO STATES VALUES('SC','South Carolina')
INSERT INTO STATES VALUES('SD','South Dakota')
INSERT INTO STATES VALUES('TN','Tennessee')
INSERT INTO STATES VALUES('TX','Texas')
INSERT INTO STATES VALUES('UT','Utah')
INSERT INTO STATES VALUES('VA','Virginia')
INSERT INTO STATES VALUES('VT','Vermont')
INSERT INTO STATES VALUES('WA','Washington')
INSERT INTO STATES VALUES('WI','Wisconsin')
INSERT INTO STATES VALUES('WV','West Virginia')
INSERT INTO STATES VALUES('WY','Wyoming')

然后是Java集成代碼:

package Java.JDBC.Beginners;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {

    public static void main(String[] args) throws SQLException {

     try (
         Connection conn = DBUtil.getConnection(DBType.HSQLDB);
         Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
         ResultSet rs = stmt.executeQuery("SELECT stateId, stateName FROM STATES");

     )  {

         rs.last();
         System.out.print("Number of rows: " + rs.getRow());

        // System.out.println("Connected!");
     } catch (SQLException e) {
         DBUtil.processException(e);
     }



    }

}



package Java.JDBC.Beginners;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class DBUtil {

      private static final String USERNAME = "dbuser";
      private static final String PASSWORD = "mypassword";
      private static final String H_CONN_STRING = 
              "jdbc:hsqldb:data/explorecalifornia";
      private static final String M_CONN_STRING = 
              "jdbc:mysql://localhost/explorecalifornia";

   public static Connection getConnection(DBType dbType) throws SQLException {

    switch (dbType) {
    case MYSQL:
        return DriverManager.getConnection(M_CONN_STRING, USERNAME, PASSWORD);
    case HSQLDB:
        return DriverManager.getConnection(H_CONN_STRING, USERNAME, PASSWORD);

    default:
        return null;
     }

   }
   public static void processException(SQLException e) {
       System.err.println("Error message: " + e.getMessage());
       System.err.println("Error code: " + e.getErrorCode() );
       System.err.println("SQL state: " + e.getSQLState());

   }

}

它給我的錯誤是:

2015-07-17T00:29:59.004+0100  SEVERE  readExistingData failed
org.hsqldb.HsqlException: error in script file: 
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.scriptio.ScriptReaderText.readExistingData(Unknown Source)
    at org.hsqldb.scriptio.ScriptReaderBase.readAll(Unknown Source)
    at org.hsqldb.persist.Log.processScript(Unknown Source)
    at org.hsqldb.persist.Log.open(Unknown Source)
    at org.hsqldb.persist.Logger.openPersistence(Unknown Source)
    at org.hsqldb.Database.reopen(Unknown Source)
    at org.hsqldb.Database.open(Unknown Source)
    at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
    at org.hsqldb.DatabaseManager.newSession(Unknown Source)
    at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Java.JDBC.Beginners.DBUtil.getConnection(DBUtil.java:23)
    at Java.JDBC.Beginners.Main.main(Main.java:14)

2015-07-17T00:29:59.011+0100  WARNING  Script processing failure
org.hsqldb.HsqlException: error in script file line: 113 org.hsqldb.HsqlException: error in script file: 
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.scriptio.ScriptReaderText.readExistingData(Unknown Source)
    at org.hsqldb.scriptio.ScriptReaderBase.readAll(Unknown Source)
    at org.hsqldb.persist.Log.processScript(Unknown Source)
    at org.hsqldb.persist.Log.open(Unknown Source)
    at org.hsqldb.persist.Logger.openPersistence(Unknown Source)
    at org.hsqldb.Database.reopen(Unknown Source)
    at org.hsqldb.Database.open(Unknown Source)
    at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
    at org.hsqldb.DatabaseManager.newSession(Unknown Source)
    at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Java.JDBC.Beginners.DBUtil.getConnection(DBUtil.java:23)
    at Java.JDBC.Beginners.Main.main(Main.java:14)
Caused by: org.hsqldb.HsqlException: error in script file: 
    at org.hsqldb.error.Error.error(Unknown Source)
    ... 17 more

2015-07-17T00:29:59.126+0100  SEVERE  could not reopen database
org.hsqldb.HsqlException: error in script file line: 113 org.hsqldb.HsqlException: error in script file: 
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.scriptio.ScriptReaderText.readExistingData(Unknown Source)
    at org.hsqldb.scriptio.ScriptReaderBase.readAll(Unknown Source)
    at org.hsqldb.persist.Log.processScript(Unknown Source)
    at org.hsqldb.persist.Log.open(Unknown Source)
    at org.hsqldb.persist.Logger.openPersistence(Unknown Source)
    at org.hsqldb.Database.reopen(Unknown Source)
    at org.hsqldb.Database.open(Unknown Source)
    at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
    at org.hsqldb.DatabaseManager.newSession(Unknown Source)
    at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Java.JDBC.Beginners.DBUtil.getConnection(DBUtil.java:23)
    at Java.JDBC.Beginners.Main.main(Main.java:14)
Caused by: org.hsqldb.HsqlException: error in script file: 
    at org.hsqldb.error.Error.error(Unknown Source)
    ... 17 more

Error message: error in script file line: 113 org.hsqldb.HsqlException: error in script file: 
Error code: -25
SQL state: S1000

如果這令人困惑,請讓我知道,我將盡力更好地解釋它!

“限制從50到30”是什么意思,如果只想返回30個狀態,請在此處更改查詢

ResultSet rs = stmt.executeQuery("SELECT stateId, stateName FROM STATES LIMIT 30");

同時發布您提到的錯誤

暫無
暫無

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

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