ниже описана попытка запустить сервер Pointbase при отсутствии документации -
надо было :) все, что необходимо для запуска сервера и работы с ним было определено
стандартно - reverse engineering :) если есть варианты более "правильные" с точки
зрения производителя Pointbase - покажите.
для запуска примера
net.fpestde.test.pointbase.Test необходим pbembedded.jar,
поставляется с Pointbase (используется, кстати, версия 4.8)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
package net.fpestde.test.pointbase;
import com.pointbase.net.*;
import com.pointbase.dbga.*;
import java.io.*;
import java.sql.*;
/**
* @author A.Grasoff
*/
public class Test {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
/* каталог нашей БД */
String dbHome = "D:\\dbdata\\pointbase\\testdbdir";
/* "грубое" удаление всех файлов БД */
File[] files = ( new File(dbHome)).listFiles();
for ( int i = 0 ; i < files.length; i++) {
File file = files[i];
file.delete();
}
/* создание экземпляра сервера com.pointbase.net.netServer */
netServer ns = new netServer();
/* берем порт сервера по умолчанию из com.pointbase.dbga.dbgaProperties */
final int PORT = dbgaProperties.getGlobaldbgaProperties().getPropertyNetPort();
final boolean IS_DAEMON = false;
System.out.print("Start Pointbase Server... ");
/* старт сервера */
try {
ns.startServer(PORT, IS_DAEMON);
System.out.println("Ok.");
} catch (Exception e) {
System.out.println("Error. Exception: " + e.getClass().getName() + " (" + e.getMessage() + ")");
System.out.println();
e.printStackTrace();
System.exit(- 1 );
}
/* имя БД */
String dbName = "testdb";
Class .forName("com.pointbase.jdbc.jdbcUniversalDriver");
/* параметр new в dbUrl - признак создания новой БД */
String dbUrl = "jdbc:pointbase:embedded:" + dbName + ";new,database.home=" + dbHome;
Connection con = DriverManager.getConnection(dbUrl);
/* версия пойнтбэйс */
DatabaseMetaData dmd = con.getMetaData();
System.out.println("*** *** ***");
System.out.println(dmd.getDatabaseProductName() + " " + dmd.getDatabaseProductVersion());
System.out.println("*** *** ***");
System.out.println();
/* простые операторы insert/select для небольшого теста */
try {
try {
con.createStatement().executeUpdate("create table testTable (id int, fname varchar(255), sname varchar(255), primary key(id))");
} catch (SQLException e) {
System.out.println("SQLException (" + e.getMessage() + ")");
System.exit(- 1 );
}
String qry = "insert into testTable (id, fname, sname) values (?, ?, ?)";
PreparedStatement pst = con.prepareStatement(qry);
System.out.print("Insert data... ");
try {
for ( int i = 1 ; i < 51 ; i++) {
String fname = "fname " + i;
String sname = "sname " + i;
pst.setInt( 1 , i);
pst.setString( 2 , fname);
pst.setString( 3 , sname);
pst.executeUpdate();
}
System.out.println("Ok");
} catch (Exception e) {
System.out.println("Exception: " + e.getClass().getName() + " (" + e.getMessage() + ")");
}
System.out.println();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from testTable order by fname, sname");
System.out.println("-- select * from testtable --");
while (rs.next()) {
System.out.println(rs.getInt("id") + "\t" + rs.getString("sname") + ", " + rs.getString("fname"));
}
rs.close();
st.close();
} finally {
con.close();
/* останавливаем сервер */
ns.stopServer();
}
System.exit( 0 );
}
}
--
Lacrima Mosa Est