- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
请看下面的代码
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());
}
}
public void insertData(int id, String firstName, String lastName)
{
createConnection();
try
{
PreparedStatement ps = con.prepareStatement("insert into APP.FRIENDS values(?,?,?)");
ps.setInt(1, id);
ps.setString(2, firstName);
ps.setString(3, lastName);
int result = ps.executeUpdate();
if(result>0)
{
JOptionPane.showMessageDialog(null,"Data Inserted");
}
else
{
JOptionPane.showMessageDialog(null,"Something Happened");
}
}
catch(Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(null,e.getLocalizedMessage());
}
finally
{
closeConnection();
}
}
public void viewData()
{
createConnection();
try
{
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from APP.FRIENDS");
StringBuffer sb = new StringBuffer("");
while(rs.next())
{
sb.append(rs.getInt(1)+"\n");
sb.append(rs.getString(2)+"\n");
sb.append(rs.getString(3)+"\n");
}
JOptionPane.showMessageDialog(null,sb);
}
catch(Exception e)
{
}
}
}
数据库界面
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class DatabaseUI extends JFrame
{
private JLabel firstName, id, lastName;
private JTextField idTxt, firstNameTxt, lastNameTxt;
private JButton ok, view;
public DatabaseUI()
{
firstName = new JLabel("First Name: ");
lastName = new JLabel("Last Name: ");
id = new JLabel("ID: ");
firstNameTxt = new JTextField(10);
lastNameTxt = new JTextField(10);
idTxt = new JTextField(10);
ok = new JButton("ADD");
ok.addActionListener(new OKAction());
view = new JButton("View");
view.addActionListener(new ViewAction());
JPanel centerPanel = new JPanel();
centerPanel.setLayout(new GridLayout(4,2));
centerPanel.add(id);
centerPanel.add(idTxt);
centerPanel.add(firstName);
centerPanel.add(firstNameTxt);
centerPanel.add(lastName);
centerPanel.add(lastNameTxt);
centerPanel.add(view);
centerPanel.add(ok);
getContentPane().add(centerPanel,"Center");
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class OKAction implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
DataBaseConnector db = new DataBaseConnector();
int id = Integer.parseInt(idTxt.getText());
db.insertData(id, firstNameTxt.getText().trim(), lastNameTxt.getText().trim());
}
}
private class ViewAction implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
DataBaseConnector db = new DataBaseConnector();
db.viewData();
}
}
public static void main(String[]args)
{
new DatabaseUI();
}
}
在这种情况下,我需要通过右键单击 database node > start server 来手动启动 derby(我使用的是 NetBeans)。这是一个嵌入式数据库,这意味着我要将它从一台机器带到另一台机器,并且愿意通过双击 jar 文件来启动,而不是在每台机器上配置数据库并手动启动它们。但是,如果我没有手动启动数据库,则会出现错误
java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused: connect.
即使在 NetBeans 内部,如果我没有手动启动它,也会出现错误。如何在我的程序中启动 Derby 而无需手动启动它?我尝试了一些方法,例如“create=true
”参数、NetworkServer.start(),但效果不佳。但是我不确定我是否做对了。
最佳答案
This is a embedded database, which means I am taking this from one machine to another and willing to start just by double clicking on the jar file,
对于 derby,嵌入式数据库意味着数据库在 JVM 中运行并写入文件系统。这意味着您可以随心所欲地移动 jar 文件,但是如果您使用嵌入式数据库,那么运行该程序的每台机器都将拥有自己独立的数据库,并且只有一个 JVM 可以同时使用该数据库时间。这是你想要的吗?
如果是这样,问题出在程序使用的 URL 上。 “jdbc:derby://localhost:1527/contact;create=true”
是告诉 DriverManager 连接到远程数据库的 URL。程序首先加载嵌入式驱动程序并不重要。
Derby 中的嵌入式 URL 看起来像这样。 jdbc:derby:bar;create=true
它将使用 Derby 系统主目录或当前工作目录之外的 bar 目录中的嵌入式数据库。有关嵌入式 URL 的更多信息,请参阅此处 connecting to a file-based derby database .
关于java - 以编程方式启动 Derby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12668231/
Select distinct APP.bca_cart.InventoryCode,APP.bca_cart.InventoryID,APP.bca_cart.CartID,APP.bca_cart
有没有办法在 derby 数据库中像 mysql 那样逐列添加? 最佳答案 我不相信。列排序并不是真正的标准 SQL 功能。编写良好的数据库应用程序不应该关心列排序。您可以通过命名 SQL 语句中的列
我已经在 Glassfish/Netbeans 中设置了 Derby DB 密码。我还选中了记住我复选框。 现在我不能再更改密码了。 最佳答案 要更改密码,您只需执行: call SYSCS_UTIL
我在 google 上搜索了一些关于 apache derby 中不区分大小写的搜索。所有谷歌搜索结果都非常旧(2007 年最新)。我发现在不丢失索引的情况下搜索不区分大小写是不可能的(“LOWER”
如何做到这一点? SYSCOLUMNS 系统表只有表的列。 SYSCHECKS 有一个 REFERENCEDCOLUMNS 对象。有什么办法可以得到这个。 我知道 JDBC getPrimaryKey
我已经使用derby db开发了一个应用程序。我已经在系统中创建了数据库。我需要将应用程序与数据库一起交付。我已删除表中的所有数据。仅保留表(数据为空的结构)。因此,如果我将db文件(所有这些文件,l
Derby没有rownum功能吗? 在oracle中,我可以选择前3行,如下所示。 select * from a where rownum < 3 在here中,他们建议如下。但这很乏味。 SELE
我正在使用嵌入式 Java 数据库来保存公交时刻表。当新计划可用时,我会自动将新计划加载到数据库表中,然后从数据库中删除旧计划。这会自动发生,无需用户干预。 我注意到数据库会随着时间的推移而变慢。我有
假设我已连接到 derby 服务器。我需要知道哪些数据库可供我连接。有命令可以这样做吗? 最佳答案 没有这样的命令。 Derby 不维护所有已知数据库的整体注册表或目录。 每个数据库都是独立的,可以通
我正在关注 Derby.js getting started guide .我跑了 $ npm install -g derby 一切都成功了,但是当我输入 $ derby new app-name
我正在寻找如何检查数据库是否存在的信息——从 Java 代码——在 hsqldb 和 Apache derby 中。在Mysql中很容易,因为我可以查询系统表--INFORMATION_SCHEMA.
我在我的 Mac 上使用 Netbeans 7.1 创建了一个 JavaDB(Derby) 数据库,我正在搜索一个免费软件应用程序,我可以使用它来查看包含所有表及其连接的完整数据库模式的图片。有任何想
我想在网络服务器模式下使用 Derby,并按照他们网站上的说明进行操作。 Derby 开局: /opt/glassfish/4.0/javadb/bin/NetworkServerControl st
我有一个使用 derby 和 JPA 的项目。我可以在我的应用程序中正常连接到数据库。我想使用 SQL Developer 连接到嵌入式数据库,以便我可以轻松浏览/查询数据库中的数据。 这是我正在使用
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 8年前关闭。 Improve this questi
有没有办法在 ij 中“漂亮地打印”查询结果?由于在查询结果中到处乱扔列,因此默认结果看起来非常难以理解。 在 PostgreSQL 中,有/pset 命令来控制 pgsql 命令的结果,我正在为 D
当我在 WildFly 上正常定义 Derby 数据源时,db.lck 文件未被删除,这表明每次关闭 WildFly 时数据库都没有正确关闭。因为嵌入式 Derby 需要一个特殊的关闭过程,该过程正在
我在 Google 上没有找到任何相关信息,但我认为这一定是可能的。 我的 Hibernate 项目遇到了一个严重的问题: 我有两个模块,一个主模块和一个工具模块。他们应该使用相同的数据库(嵌入式 D
我正在使用 Spring 构建一个 JavaEE 应用程序,我正在尝试将它与 DerbyEmbeddedDriver 连接起来。该应用程序将在 SAP Hana Cloud Platform 试用版上
我正在使用 Derby DB作为我的 Qpid broker 的存储.当作为嵌入式数据库运行时,试图找出 Derby 存储数据文件的位置。 任何人都知道文件所在的位置或如何设置要使用的目录? 最佳答案
我是一名优秀的程序员,十分优秀!