javaDB两种网络模式

 1, 设置环境变量. 
set DERBY_HOME=E:\ db-derby-10.4.1.3-bin 
set path=%DERBY_HOME%\bin;%PATH% 

2, 需要Derby的jar包添加到classpath环境变量中 
derby.jar - 内嵌模式 
derbyclient.jar -网络模式 



3, 如何在java中访问derby数据库 

The connection URL syntax is as follows: 
jdbc:derby:[subsubprotocol:][databaseName][;attribute=value]* 


Subsubprotocol, which is not typically specified, determines how Derby looks for a 
database: in a directory, in a class path, or in a jar file. Subsubprotocol is one of the 
following: 
1,directory: The default. Specify this explicitly only to distinguish a database that 
might be ambiguous with one on the class path. 
2,classpath: Databases are treated as read-only databases, and all databaseNames 
must begin with at least a slash, because you specify them "relative" to the 
classpath directory. See Accessing databases from the classpath for details. 
3,jar: Databases are treated as read-only databases. DatabaseNames might require 
a leading slash, because you specify them "relative" to the jar file. See Accessing 
databases from a jar or zip file for details. 
jar requires an additional element immediately before the database name: 
(pathToArchive) 


PS: 
使用Java代码访问Derby数据库与访问其它数据库的区别如下: 
1) JDBC驱动的不同; 
2) 数据库连接URL的不同; 
3) 在访问内嵌模式数据库时,需要显示关闭数据库。 

下面分别实例访问内嵌模式和网络模式Derby数据库的代码 


1) 访问内嵌模式Derby数据库 
String driver = “org.apache.derby.jdbc.EmbeddedDriver”; 
String url = “jdbc:derby:firstdb;create=true”; 
Connection conn; 
try { 
Class.forName(driver); 
conn = DriverManager.getConnection(url); 
}catch(Exception e) { 
…… 
}finally { 
…… 
DriverManager.getConnection("jdbc:derby:;shutdown=true"); 

建立好连接后,其它的数据操作,如查询、更新数据都和其它数据库一样,这里不详述。有一点需要注意,通过Java应用程序访问内嵌模式Derby数据 

库时,应用程序有责任需要在程序结束时关闭Derby数据库,如上面代码finally中的 
DriverManager.getConnection("jdbc:derby:;shutdown=true"); 
shutdown参数用于关闭Derby数据库,如果url中指定了数据库命,则只会关闭指定的数据库,而不会关闭整个Derby数据库。数据库关闭成功时, 

Derby会抛出一个错误码为XJ015和一个08006的异常表示关闭成功,应用程序可以不处理这两个异常。 

2) 访问网络模式Derby数据库 
网络模式和内嵌模式的不同出在于: 
A. 数据库连接URL的不同; 
B. 应用程序退出时无效关闭Derby数据库; 
C. 数据库驱动的不同; 
String driver = “org.apache.derby.jdbc.ClientDriver”; 
String url = “jdbc:derby: //localhost:1527/firstdb;create=true”; 
Connection conn; 
try { 
Class.forName(driver); 
conn = DriverManager.getConnection(url); 
}catch(Exception e) { 
…… 

由于网络模式下,Derby数据库做为一个独立运行的数据库,可以被多个应用程序所访问,所以应用程序在运行结束时不应该关闭Derby数据库。 

PS: 
e. Edit the DEFINE VARIABLES SECTION of the program so that the 
driver variable contains the name of the Derby client driver class and the 
connectionURL variable contains the hostname and port number of the 
Network Server. 


Original definitions 
String driver = "org.apache.derby.jdbc.EmbeddedDriver"; 
String dbName="jdbcDemoDB"; 
String connectionURL = "jdbc:derby:" + dbName + 
";create=true"; 

New definitions 
String driver = "org.apache.derby.jdbc.ClientDriver"; 
... 
String connectionURL = "jdbc:derby://localhost:1527/" + 
dbName + ";create=true"; 


PS: 
BOOT DATABASE SECTION: 
The DriverManager class loads the database using 
the Derby connection URL stored in the variable connectionURL. This URL includes 
the parameter ;create=true so that the database will be created if it does not already 
exist. The primary try and catch block begins here. This construct handles errors for 
the database access code 


4, derby.properties 
The text file derby.properties contains the definition of properties, or configuration 
parameters that are valid for the entire system. 
derby.properties should be placed in the directory specified by the derby.system.home properties.

Here is a sample excerpt from the derby.properties file: 
# Users definition 

derby.user.sa=derbypass 
derby.user.mary=little7xylamb 
derby.drda.startNetworkServer=true 


4.1 
derby.system.home 
Function 
Specifies the Derby system directory, which is the directory that contains subdirectories 
holding databases that you create and the text file derby.properties. 
If the system directory that you specify with derby.system.home does not exist at startup, 
Derby creates the directory automatically. 


Default 
Current directory (the value of the JVM system property user.dir). 
If you do not explicitly set the derby.system.home property when starting Derby, the 
default is the directory in which Derby was started. 
Note: You should always explicitly set the value of derby.system.home. 
Example 
-Dderby.system.home=C:\derby 
Dynamic or static 
This property is static; if you change it while Derby is running, the change does not take 
effect until you reboot. 


Set in DOS 
java -Dderby.system.home=C:\home\Derby\ 
-Dderby.storage.pageSize=8192 JDBCTest 
You start up your application, being sure to set the derby.system.home property 
appropriately: 
java -Dderby.system.home=c:\system_directory MyApp 

Example 
-Dderby.system.home=C:\derby 



Set in window 
The following example sets derby.system.home on Windows. 
Properties p = System.getProperties(); 
p.put("derby.system.home", "C:\databases\sample"); 


There should be one derby.properties file per system, not per database. 

4.2 derby数据库的位置 
* The directory derbyDB will be created under the directory that 
* the system property derby.system.home points to, or the current 
* directory (user.dir) if derby.system.home is not set. 


5, 加密 

二次加密: jdbc:derby:newDB;create=true;dataEncryption=true; 
encryptionAlgorithm=DES/CBC/NoPadding;encryptionKey=6162636465666768 

三次加密:jdbc:derby:encryptedDB;create=true;dataEncryption=true; 
encryptionProvider=com.sun.crypto.provider.SunJCE; 
encryptionAlgorithm=DESede/CBC/NoPadding; 
bootPassword=cLo4u922sc23aPe 


Encrypting a database when you create it 
If your environment is configured properly, you can create your database as an encrypted 
database (one in which the database is encrypted on disk). To do this, you use the 
dataEncryption=true attribute to turn on encryption and the bootPassword=key 
attribute or the encryptionKey attribute to specify a key for the encryption. 
You can also specify an encryption provider and encryption algorithm other 
than the defaults with the encryptionProvider=providerName and 
encryptionAlgorithm=algorithm attributes. 

jdbc:derby:encryptedDB;create=true;dataEncryption=true; 
bootPassword=DBpassword 

Creating an encrypted database with an external key 


Derby supplies or supports the following optional security mechanisms: 
1, User authentication 
Derby verifies user names and passwords before permitting them access to the 
Derby system. 
2, User authorization 
A means of granting specific users permission to read a database or to write to a 
database. 
3, Disk encryption 
A means of encrypting Derby data stored on disk. 

4, Validation of Certificate for Signed Jar Files 
In a Java 2 environment, Derby validates certificates for classes loaded from signed 
jar files. 
5, Network encryption and authentication 
Derby network traffic may be encrypted with SSL/TLS. SSL/TLS certificate 
authentication is also supported. See "Network encryption and authentication with 
SSL/TLS" in the Java DB Server and Administration Guide for details. 
The following figure shows some of the Derby security mechanisms at work 


======================== Refer ============================ 

Getting Started with Java DB 
Describes how to install and configure Java DB. Includes a self-study tutorial for 
users new to Java DB and a quick-start guide for experienced JDBC users. This 
guide introduces the dblook, ij, and sysinfo tools, and the libraries and scripts 
that are included with Java DB. 
Java DB Developer's Guide 
Describes the functionality and features of Java DB common to all deployments, such 
as Java DB's JDBC and SQL specifics, deploying Java DB applications, security, and 
other advanced features. 
Java DB Reference Manual 
Documents the implementation of the SQL language in Java DB. This guide provides 
reference information about the JDBC and JTA implementations, keywords, system 
tables, properties, and SQLExceptions in Java DB. 
Tuning Java DB 
Explains how to configure and tune Java DB through properties and provides 
reference information on properties. This guide also offers performance tips, an 
in-depth discussion of performance, and information about the Java DB optimizer. 
Java DB Tools and Utilities Guide 
Describes how to use the the Java DB tools such as dblook, ij, andsysinfo, and 
how to use the system procedures to import and export data, and how to store Java 
code in the database. 
Java DB Server and Administration Guide 
Part One of this guide discusses configuring servers, how to program client 
applications, and database administration. In addition, some systems might require 
administrative tasks such as backing up databases. These tasks are independent of 
any server framework but are unique to multi-user or large systems. 
Part Two of this guide discusses administrative issues such as backups and 
debugging deadlocks. 
Java DB API Reference 
An API Reference that is automatically generated for all public Java DB classes. 
No reference is provided for the JDBC API, which is part of the Java 2 Platform, 
Standard Edition. For more information about the classes in the API, see the Java DB 
Reference Manual. 
You can access the Java DB manuals and API Reference from the Java DB 
Documentation page on the Java DB web site. The product documentation is also 
installed with Java DB. The manuals are installed in the docs subdirectory and the API 
Reference is installed in the javadoc subdirectory. 

get from javaDB docs... 

==================== Refer 2 ================================== 
public void execute() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException { 

Statement stmt = null;
//specify the derby.system.home variable 
Properties p = System.getProperties();
p.put("derby.system.home",hp.getConfig("JavaDB.home")); 


try { 
Connection conn = null; 
ArrayList statements = new ArrayList(); // list of Statements, PreparedStatements 
PreparedStatement psInsert = null; 
PreparedStatement psUpdate = null; 
Statement s = null; 
ResultSet rs = null; 

String protocol = "jdbc:derby:"; 
String driver = "org.apache.derby.jdbc.EmbeddedDriver"; 

// String protocol = "jdbc:derby://localhost:1527/"; 
// String driver = "org.apache.derby.jdbc.ClientDriver"; 

//String dbName = "DB2EToJavaDB"; 
String dbName = DBHelper.getConfig("NewJavaDB.DatabaseName"); 
String username = DBHelper.getConfig("NewJavaDB.username"); 
String password = DBHelper.getConfig("NewJavaDB.password"); 

Class.forName(driver).newInstance(); 
try { 
conn = DriverManager.getConnection(protocol + dbName 
//, props); 
+ ";user="+username+";create=true;" + 
"dataEncryption=true;" + 
"encryptionAlgorithm=DESede/CBC/NoPadding;" + 
"encryptionProvider=com.ibm.crypto.provider.IBMJCE;"+ 
//"encryptionKey=GYIAUE3xcZl9N9zOsWf3Bw=="); 
"bootPassword="+password);//GYIAUE3xcZl9N9zOsWf3Bw== 
//"bootPassword=GYIAUE3xcZl9N9zOsWf3Bw=="); 
} catch ( 
Exception e) { 
// TODO Auto-generated catch block 
logger.printMsg(StartMigrate2.getExceptionTrace(e),"RED"); 

stmt = conn.createStatement();

你可能感兴趣的:(javaDB两种网络模式)