次のコードをご覧ください
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)
{
}
}
}
DatabaseUI
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();
}
}
この場合、データベースノード>サーバーの起動を右クリックして、手動でダービーを起動する必要があります(NetBeansを使用しています)。これは組み込みデータベースです。つまり、これをあるマシンから別のマシンに移動し、jarファイルをダブルクリックするだけで開始できます。すべてのマシンでデータベースを構成して手動で開始するのではありません。ただし、データベースを手動で起動しなかった場合、エラーが発生します
java.sql.SQLNonTransientConnectionException:java.net.ConnectException:メッセージ接続が拒否されたポート1527でサーバーローカルホストに接続中にエラーが発生しました:接続。
NetBeans内であっても、手動で起動しなかった場合はエラーが発生します。手動で起動せずに、プログラム内でDerbyを起動するにはどうすればよいですか?create=true
" "パラメータ、NetworkServer.start()のようないくつかの方法を試しましたが、うまくいきません。しかし、私はそれを正しく行ったかどうかはわかりません。