Tag: derby

如何运行sql脚本以便从java代码更新Derby架构?

我们客户端的derby数据库安装具有不同的模式版本。 例如,Customer1具有db模式版本4.1.5.0240,Customer2具有版本4.0.1.0330。 我们的想法是在安装新软件时将这些模式更新为实际版本。 存在多个sql脚本以便将版本更新到下一级别。 例如update_4.1.5.0240_to_4.3.1.0020.sql。 我正在寻找的工具/程序应该从derby数据库表中读取实际安装的版本。 根据该版本,应运行适当的sql脚本,以便将架构更新到下一级别。 必须重复此过程,直到找不到实际读取版本的匹配sql脚本。 在没有任何管理员帮助的情况下,客户站点的安装应该是无头的。 1.)我更喜欢使用JDBC读取版本的java程序。 但是如何从java中运行sql脚本? 我应该从java调用ij命令行工具吗? 2.)有更好的选择吗? 谢谢Viktor

哪里可以在j2me中看到derby数据库中存储的数据

我创建了包含名称和编号的MIDlet类,并使用RecordStore将数据存储在apache derby数据库中。程序执行成功。现在我想在derby数据库中看到我输入的数据。请帮助我,我可以看到。我是使用netbeans IDE。

用于从JavaDB数据库中选择常量字段值的语法是什么?

我正在使用UNION ALL将几个SELECT查询的结果合并到一个ResultSet 。 我使用常量字段值来标识每行产生的语句。 这适用于MySQL,但Java DB抛出SQLSyntaxErrorException ,指向第一个常量字段值后面的逗号。 在 针对JavaDB数据库的 SELECT 查询中 使用什么语法来选择常量字段值 ? 第一个SELECT有~100列,具有不同的数据类型,并且填充以下SELECT以匹配正确的列数。 我在这里 。 目前的陈述如下: select (0, ID, NAME_FIRST, NAME_LAST) from person where ID=500 union all select (1, COMMTYPE_ID, NULL, NULL) from person_commtype where PERSON_ID=500 这会引发以下exception: java.sql.SQLSyntaxErrorException: Syntax error: Encountered “,” at line 2, column 7. 我也试过转换值,并删除括号,如下所示: select (cast(0 as integer), ID, NAME_FIRST, […]

java.lang.ClassNotFoundException Netbeans java derby

我使用Netbeans,做一个java应用程序。 我在netbeans中使用Java DB创建了一个用于db连接的ConnectDB类。 我启动了服务器,十个连接到db。 当我运行它生成的文件 java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver @ 25 line 和 java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/Libraryprj;create=true @ 30行代码 代码如下 package Lms; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; /** * * @author JOJO */ public class ConnectDB { static Connection conn; public static void main(String[] args) { String driver = […]

SQLException:值的数量不相同

我使用Apache Derby作为嵌入式数据库。 DatabaseCheck.java 该类用于创建表。 package normal; //This class if s for checking the database. If the database doesn’t exists, this class will create one import java.sql.*; public class DatabaseCheck { private Connection con; public DatabaseCheck() { createConnection(); try { Statement st = con.createStatement(); st.executeQuery(“select * from PhoneData”); new MainForm(); } catch(Exception e) { System.out.println(e.getLocalizedMessage()); if(e.getLocalizedMessage().equals(“Schema […]

在Derby和Hsqldb中转义表和字段名称的问题

我的ORMLite包有问题。 当我为表生成模式时,我认为逃避所有实体名称是一个好习惯。 这将保护某些Java类或字段名称不是SQL保留字: CREATE TABLE “footable” (“stuff” VARCHAR(255)) 我现在正在添加“原始”查询支持,以便ORMLite可以帮助用户执行自己的查询。 但是,我发现使用Derby和Hsqldb时, 如果没有转义,则不能使用实体名称。 例如,以下查询: SELECT * FROM footable 生成以下错误: Derby: ERROR 42X05: Table/View ‘FOOTABLE’ does not exist. Hsqldb: Table not found in statement [select * from footable] 如果select表也被转义为”footable”它可以正常工作。 ORMLite支持的其他数据库可以在有或没有转义的情况下正常工作:MySQL,Postgres,Microsoft SQL Server,H2和Sqlite。 有没有更好的方法来逃避Derby和Hsqldb中的保留字? 关于如何以便携方式执行此操作的其他想法? 谢谢。

当指定为1时,Derby Auto递增100

在使用查询中创建derby数据库表由主列自动增量组成。 CREATE TABLE \”table\” (\n” + ” \”id\” INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL,\n” + ” \”path\” VARCHAR(2000) DEFAULT NULL,\n” + ” \”downloaded\” BOOLEAN DEFAULT false NOT NULL,\n” + ” \”retried_times\” SMALLINT DEFAULT 0 NOT NULL,\n” + ” \”name\” VARCHAR(40),\n” + ” \”downloaded_date\” TIMESTAMP DEFAULT NULL,\n” […]

以编程方式启动Derby

请查看以下代码 DataBaseConnector.java import java.sql.*; import javax.swing.*; public class DataBaseConnector { private Connection con; public DataBaseConnector() { } private boolean createConnection() { try { Class.forName(“org.apache.derby.jdbc.EmbeddedDriver”); con = DriverManager.getConnection(“jdbc:derby://localhost:1527/contact;create=true”,”yohanrw”,”knight”); } catch(Exception e) { System.out.println(“Error getConnection”); e.printStackTrace(); JOptionPane.showMessageDialog(null,e.getLocalizedMessage()); return false; } return true; } private void closeConnection() { try { con.close(); } catch(Exception e) { JOptionPane.showMessageDialog(null,e.getLocalizedMessage()); } } […]

使用setString()从String转换为Clob不起作用

我正在尝试将String转换为Clob以存储在数据库中。 我有以下代码: Clob clob = connection.createClob(); System.out.println(“clob before setting: ” + clob); clob.setString(1,”Test string” ); System.out.println(“clob after setting: ” + clob); System.out.println(“clob back to string: ” + clob.toString()); 当我运行它时,Clob没有被设置,输出如下: clob before setting: org.apache.derby.impl.jdbc.EmbedClob@1f5483e clob after setting: org.apache.derby.impl.jdbc.EmbedClob@1f5483e clob back to string: org.apache.derby.impl.jdbc.EmbedClob@1f5483e 我看起来到处都说使用setString方法,我不知道为什么这对我不起作用。

Hibernate + Derby:不支持“BOOLEAN”和“INTEGER”之间的比较

我在查询Derby数据库时遇到问题。 我正在使用Hibernate和JPA。 问题与布尔列有关(可能)。 每个查询都以错误结束: org.hibernate.exception.SQLGrammarException:不支持“BOOLEAN”和“INTEGER”之间的比较。 类型必须具有可比性。 字符串类型还必须具有匹配的排序规则。 如果排序规则不匹配,可能的解决方案是转换操作数以强制它们进行默认排序规则(例如SELECT tablename FROM sys.systables WHERE CAST(tablename AS VARCHAR(128))=’T1’) 您可以在下面找到示例代码和配置。 简化了样本以便于阅读。 这是我的JPA实体: @Entity public abstract class Task implements Serializable { @Id @GeneratedValue(strategy = GenerationType.TABLE) protected long id; @Column protected boolean deleted; public long getId() { return id; } public boolean isDeleted() { return deleted; } public void setId(long id) […]