当前位置: 首页 > 面试题库 >

以编程方式启动Derby

孔志强
2023-03-14
问题内容

请看下面的代码

数据库连接器

 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)
            {



            }
        }


    }

数据库UI

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();
    }
}

在这种情况下,我需要通过右键单击 _数据库节点

启动服务器_来手动启动derby(我正在使用NetBeans)。这是一个嵌入式数据库,这意味着我要将其从一台计算机转移到另一台计算机,并愿意通过双击jar文件来开始,而不是在每台计算机上都配置数据库并手动启动它们。但是,如果我没有手动启动数据库,则会收到错误消息

java.sql.SQLNonTransientConnectionException:java.net.ConnectException:在端口1527上连接到服务器localhost时出错,并显示消息拒绝连接:连接。

即使在NetBeans内部,如果我没有手动启动它,也会出现错误。如何在程序中启动Derby,而无需手动启动它?我尝试了一些类似“
create=true”参数,NetworkServer.start()的方法,但是效果不好。但是,我不确定我是否正确html" target="_blank">执行了操作。


问题答案:

这是一个嵌入式数据库,这意味着我要将其从一台计算机转移到另一台计算机,并愿意通过双击jar文件来开始,

对于derby,嵌入式数据库意味着该数据库在JVM中运行并写入文件系统。这意味着您可以随意移动jar文件,但是如果使用嵌入式数据库,则在其上运行程序的每台计算机都将拥有自己的单独数据库,并且只有一个JVM可以在一个数据库中使用该数据库。时间。那是你要的吗?

如果是这样,则问题出在程序使用的URL。"jdbc:derby://localhost:1527/contact;create=true"是一个URL,它告诉DriverManager连接到远程数据库。程序首先加载嵌入式驱动程序并不重要。

Derby中的嵌入式URL看起来像这样。jdbc:derby:bar;create=true它将使用Derby系统主目录或当前工作目录之外的bar目录中的嵌入式数据库。



 类似资料:
  • 请看一下下面的代码 数据库连接器。JAVA 用户界面 在这种情况下,我需要通过右键单击数据库节点手动启动derby(我使用的是NetBeans) JAVAsql。SQLNonTransientConnectionException:java。网ConnectException:连接到端口1527上的服务器本地主机时出错,消息“连接被拒绝:连接”。 无论是在NetBeans内部,如果我没有手动启动它

  • 问题内容: 我想使用此代码来重新启动运行 Android Things的 RPI3 : __ 我收到以下错误: java.io.IOException:无法运行程序“ su”:error = 13,权限被拒绝 我将所有权限添加到清单中 我想念什么吗? 问题答案: DP 4中的 二进制文件,与之前的所有开发人员预览一样,具有世界可执行的权限,即以下产量 话虽如此,仍然可以为任何用户( Android

  • 问题内容: 我正在用Java编写服务器-客户端应用程序的代码,我需要在服务器端实现本地数据库,因此我决定使用H2数据库引擎。 要添加的另一件事是,我使用TCP连接来启动和运行数据库。到目前为止,这是我整理的内容: 连接字符串在哪里。 这段代码返回一个异常: 我关注了这篇文章。 问题答案: 这样的事情应该工作 并且输出是已建立的连接:H2 / STACKOVERFLOW 已通过h2-1.4.184测

  • 问题内容: 我直接使用默认的os拨号器通过以下方式创建呼叫: 是否可以直接从我的应用程序启动Skype? 我尝试传递一个数字,如下所示: 传递数字失败。 问题答案: 您需要知道Skype软件包名称(例如com.skype.android),然后才能启动它:

  • 因此,我使用下面的代码作为尝试自动启动Appium服务器,但获得连接被拒绝:连接错误。我正在使用Maven和Testng 日志: