菜鸟问题Derby 数据库的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜鸟问题Derby 数据库的使用相关的知识,希望对你有一定的参考价值。
我现在做毕业设计 做jsp网页想用myeclipes自带的derby数据库
问题是 1.连接数据库的时候 forName()方法和 getConnection()
方法里面都应该写什么啊?
2.derby数据库在什么地方建表?
import java.io.File;
import java.io.FileInputStream;
import java.net.URI;
import java.sql.*;
import java.util.PropertyResourceBundle;
public class MySqlConnector
/*
* 先在该class文件目录下新建一个dbCon.ini
* 如:eclipse 则 your project/bin/dbCon.ini
* 内容 如下:
* userName=你的数据库用户名
* password=你的数据库用户密码
* database=要连接的数据库名称
*/
private static final String CON_NAME = "userName";
private static final String CON_PASS = "password";
private static final String CON_DNAME = "databaseName";
private Connection connection = null;
private MySqlConnector()
public static MySqlConnector getInstance()
return new MySqlConnector();
private boolean dataInit()
boolean isOK = false;
String userName = null;
String password = null;
String databaseName = null;
PropertyResourceBundle rBoundle = null;
try
String conPath = MySqlConnector.class.getResource("/").toString() + "/dbCon.ini";
URI uri = new URI(conPath);
File file = new File(uri);
rBoundle = new PropertyResourceBundle(new FileInputStream(file));
userName = rBoundle.getString(MySqlConnector.CON_NAME);
password = rBoundle.getString(MySqlConnector.CON_PASS);
databaseName = rBoundle.getString(MySqlConnector.CON_DNAME);
String url;
url = "jdbc:mysql://localhost/" + databaseName + "?user="
+ userName + "&password=" + password;
System.out.println(url);
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(url);
isOK = true;
catch (Exception e)
e.printStackTrace();
isOK = false;
return isOK;
public Connection getConnection()
if (dataInit())
return connection;
else
return null;
public static void main(String [] args)
MySqlConnector.getInstance().getConnection();
public void close()
if (connection != null)
try
connection.close();
catch (SQLException e)
e.printStackTrace();
参考技术A 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");
详细可见:http://blog.zol.com.cn/901/article_900078.html 参考技术B 买本廖雪峰的spring,既可以学spring,里面又有介绍derby的用法. 参考技术C 到http://db.apche.org自己看文档,一切都有!
使用身份验证的 Derby 嵌入式数据库
【中文标题】使用身份验证的 Derby 嵌入式数据库【英文标题】:Derby Embedded Database using Authentication 【发布时间】:2015-07-15 06:14:58 【问题描述】:Apache Derby 嵌入式数据库在默认情况下不需要身份验证。我们可以在系统级别或数据库级别启用身份验证。我使用 java 代码进行了系统级启用。
Properties p=System.getProperties();
p.put("derby.connection.requireAuthentication", "true");
然后我尝试使用此连接 URL 创建数据库。
jdbc:derby:derbysample;create=true;user=root;password=root
当我运行它时
DriverManager.getConnection(connectionURL);
它创建数据库文件夹也会引发有关身份验证的错误?如何使用凭据创建数据库?
java.sql.SQLNonTransientConnectionException:连接身份验证 发生故障。原因:身份验证无效.. at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知 来源)在 org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知 来源)在 org.apache.derby.impl.jdbc.Util.generateCsSQLException(未知来源) 在 org.apache.derby.impl.jdbc.Util.generateCsSQLException(未知 来源)在 org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(未知 来源)在 org.apache.derby.impl.jdbc.EmbedConnection.checkUserCredentials(未知 来源)在 org.apache.derby.impl.jdbc.EmbedConnection.(未知 来源)在 org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(未知 来源)在 org.apache.derby.jdbc.InternalDriver.connect(未知 来源)在 org.apache.derby.jdbc.InternalDriver.connect(未知 来源)在 org.apache.derby.jdbc.AutoloadedDriver.connect(未知 来源)在 java.sql.DriverManager.getConnection(DriverManager.java:664) 在 java.sql.DriverManager.getConnection(DriverManager.java:208) 在 derbytest.DerbyTest.createConnection(DerbyTest.java:56) 在 derbytest.DerbyTest.main(DerbyTest.java:39) 原因:错误 08004: 发生连接身份验证失败。原因:无效 认证..在 org.apache.derby.iapi.error.StandardException.newException(未知 来源)在 org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(未知 来源)... 15 更多
【问题讨论】:
有大量关于 Derby 安全功能的文档,包括关于身份验证的完整部分:db.apache.org/derby/docs/10.11/security/cseccsecure42374.html 【参考方案1】:首先使用属性create=true
指定您要创建的数据库URL
jdbc:derby:derbysample111;create=true
然后使用DriverManager
获取连接。如果不存在,它将创建一个数据库。
conn = DriverManager.getConnection("jdbc:derby:derbysample111;create=true");
conn.setSchema("APP");
然后在 derby 中启用身份验证并设置用户和密码。它将设置数据库级别的身份验证。
Statement s = conn.createStatement();
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
+ " 'derby.connection.requireAuthentication', 'true')");
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
+ " 'derby.authentication.provider', 'BUILTIN')");
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
+ " 'derby.user.root', '12345')");
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
+ " 'derby.database.propertiesOnly', 'true')");
只需要设置一次。然后可以使用此 URL 访问您的数据库
jdbc:derby:derbysample111;create=true;user=root;password=12345
【讨论】:
以上是关于菜鸟问题Derby 数据库的使用的主要内容,如果未能解决你的问题,请参考以下文章