前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDBC的配置(包括db.properties等)

JDBC的配置(包括db.properties等)

作者头像
MickyInvQ
发布2020-09-27 14:58:13
1.4K0
发布2020-09-27 14:58:13
举报
文章被收录于专栏:InvQ的专栏

3.1数据库URL 在连接数据库时必须使用各种与数据库类型相关的参数,比如主机名、端口号和数据库名。JDBC使用了一种与普通URL相类似的语法来描述数据源。 e.g. 常用数据库URL Derby: jdbc:derby://localhost:1527/COREJAVA;create=true PostgreSQL: jdbc:postgresql:COREJAVA MySQL: jdbc:mysql://host:port/database Oracle: jdbc:oracle:thin:@host:port:databse JDBC URL的语法一般为: jdbc:subprotocol:other stuff subprotocol用于指明连接到数据库的特定驱动程序。 other stuff参数的格式随所使用的subprotocol不同而不同。 3.2 驱动程序JAR文件 在运行访问数据库的程序时,需要将驱动程序的JAR文件包括到类路径中(编译时并不需要整个JAR文件) 从命令行启动时,只需要使用下面的命令 java -classpath .;driverJar ProgramName 通过;分号,将当前路径(由 . 字符标示的路径)与驱动程序的JAR文件分隔开。 3.3 启动数据库 数据库服务器在连接之前需要先启动 Derby数据库的启动步骤 (1)打开命令shell(linux)或cmd(windows)窗口C:\"Program Files"\Sun\JavaDB\lib (2)找到derbyrun.jar,一般在JavaDB中(C:\Program Files\Sun\JavaDB\lib) (3)启动服务 : java -jar derbyrun.jar server start (4)配置文件db.properties ij.driver=org.apache.derby.jdbc.ClientDriver ij.protocol=jdbc:derby://localhost:1527/ ij.database=DBNAME;create=true 注意 : 只有配置文件名和database可以使用任意名 (5)在另一个shell/cmd窗口中运行Derby的交互式脚本执行工具 : java -jar derbyrun.jar ij -p db.properties 注意 : 打开交互式执行脚本工具之后,会在derbyrun.jar所在目录下创建以配置文件中ij.database的值命名的文件夹。 (6)在打开的窗口中可以输入SQL语句,以;分号结尾。 (7)退出编辑器EXIT; (8)关闭服务器 : java -jar derbyrun.jar server shutdown 3.4 注册驱动器类 情况一:某些JDBC的JAR文件将自动注册驱动器类(Java Standard Edition Service Provider),包含META-INF/services/java.sql.Driver文件的JAR文件可以自动注册。 e.g.Derby中lib目录下JAR包derby.jar中包含java.sql.Driver文件。该文件中"org.apache.derby.jdbc.AutoloadedDriver"为Derby的JDBC驱动程序实现名字。 情况二:如果驱动程序JAR不支持自动注册,需要找出数据库提供商使用的JDBC驱动器的名字。 典型的名字如下: Oracle:oracle.jdbc.driver.OracleDriver SQLServer:com.microsoft.jdbc.sqlserver.SQLServerDriver MySQL:org.gjt.mm.mysql.Driver 或com.mysql.jdbc.Driver 注:这里实际上都是调用的com.mysql.jdbc.Driver,下面为org.gjt.mm.mysql.Driver源码

Java代码

  1. package org.gjt.mm.mysql;
  2. import java.sql.SQLException;
  3. public class Driver extends com.mysql.jdbc.Driver{
  4. }

DriverManager的两种注册方式 DriverManager : 管理一组JDBC驱动程序的基本服务。 (1)在JAVA程序中加载驱动器类 e.g.Class.forName("com.mysql.jdbc.Driver"); com.mysql.jdbc.Driver中得静态方法可以向DriverManager中注册了MYSQL的驱动实例。

Java代码

  1. public class Driver extends NonRegisteringDriver{
  2. public Driver() throws SQLException{}
  3. static {
  4. try{
  5. DriverManager.registerDriver(new Driver());
  6. }
  7. catch(SQLException E){
  8. throw new RuntimeException("Can't register driver!");
  9. }
  10. }
  11. }

Mysql的Driver类实现了java.sql.Driver接口,任何数据库提供商的驱动类都必须实现这个接口。在DriverManager类中使用的都是接口Driver类型的驱动,也就是说驱动的使用不依赖于具体的实现。 在com.mysql.jdbc.Driver类中,除了构造方法,就是一个static的方法体,它调用了DriverManager的registerDriver()方法,这个方法会加载所有系统提供的驱动,并把它们都假如到具体的驱动类中。 (2)通过设置jdbc.drivers属性。 可以通过命令参数来指定这个属性 e.g.java -Djdbc.drivers=com.mysql.jdbc.Driver ProgramName 或在应用中通过调用来设置系统属性,在这种方法中可以提供多个驱动,并用冒号将他们分割 e.g.System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:oracle.jdbc.driver.OracleDriver")

(3)未尝试 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 3.5 连接到数据库 驱动管理器遍历所有注册过的驱动程序,以便找到一个能够使用数据库URL中指定的子协议的驱动程序。 getConnection方法返回一个Connection对象。 要连接到数据库,我们还需要知道数据库的名字和口令。 注意:默认情况下Derby允许我们使用任何用户名进行连接,并且不坚持口令。它会为每个用户生成一个单独的模式,而默认的用户名是app。

Java代码

  1. package jdbc;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.ResultSet;
  8. import java.sql.SQLException;
  9. import java.sql.Statement;
  10. import java.util.Properties;
  11. public class ConnectionDB {
  12. public static void main(String[] args) {
  13. try {
  14. runTest();
  15. } catch (SQLException se) {
  16. for (Throwable t : se) {
  17. t.printStackTrace();
  18. }
  19. } catch (IOException ioe) {
  20. ioe.printStackTrace();
  21. } catch (ClassNotFoundException cnfe) {
  22. cnfe.printStackTrace();
  23. }
  24. }
  25. private static void runTest() throws SQLException, IOException, ClassNotFoundException {
  26. Connection conn = null;
  27. Statement stat = null;
  28. try {
  29. conn = getConnection();
  30. stat = conn.createStatement();
  31. stat.executeUpdate("CREATE TABLE greetings(message varchar(20))");
  32. stat.executeUpdate("INSERT INTO greetings VALUES('Hello,World!')");
  33. ResultSet result = stat.executeQuery("SELECT message as ms FROM greetings");
  34. if (result.next()) {
  35. System.out.println(result.getString("ms"));
  36. }
  37. result.close();
  38. stat.executeUpdate("DROP TABLE greetings");
  39. } finally {
  40. stat.close();
  41. conn.close();
  42. }
  43. }
  44. private static Connection getConnection() throws IOException, SQLException, ClassNotFoundException {
  45. FileInputStream fis = null;
  46. try {
  47. File file = new File(System.getProperty("user.dir")+"/bin/database.properties");
  48. fis = new FileInputStream(file);
  49. Properties param = new Properties();
  50. param.load(fis);
  51. String drivers = param.getProperty("jdbc.drivers");
  52. if (drivers != null && !"".equals(drivers)) {
  53. System.setProperty("jdbc.drivers", drivers);
  54. }
  55. // Class.forName(drivers);
  56. String url = param.getProperty("jdbc.url");
  57. String username = param.getProperty("jdbc.username");
  58. String password = param.getProperty("jdbc.password");
  59. return DriverManager.getConnection(url, username, password);
  60. } finally {
  61. fis.close();
  62. }
  63. }
  64. }

Properties代码

  1. #MySQL
  2. jdbc.drivers=com.mysql.jdbc.Driver
  3. jdbc.url=jdbc:mysql://localhost:3306/corejava
  4. jdbc.username=root
  5. jdbc.password=12345678
  6. #Derby
  7. #jdbc.drivers=org.apache.derby.jdbc.AutoloadedDriver
  8. #jdbc.url=jdbc:derby://localhost:1527/COREJAVA;create=true
  9. #jdbc.username=dbuser
  10. #jdbc.password=12345678
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/06/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档