查看“核心技术Ⅱ:数据库编程”的源代码
←
核心技术Ⅱ:数据库编程
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:JavaCore]] == 关于JDBC == Java数据库连接('''JDBC''')API:<br/> : 遗循了微软公司非常成功的'''ODBC'''模式(ODBC:微软提供为'''C语言访问数据库'''的一套编程接口)。JDBC和ODBC都基千同一个思想:根据API编写的程序都可以与'''驱动管理器'''进行通信,而驱动管理器则通过'''驱动程序'''与实际的数据库进行通信。 * 我们将JDBC包看作是一个用于“将SQL语句传递给数据库”的应用编程接口; '''JDBC的目标:''' # 通过使用标准的SQL语句,甚至是专门的SQL扩展,程序员就可以利用Java语言开发访问数据库的应用,同时还依旧遵守Java语言的相关约定。 # 数据库供应商和数据库工具开发商可以提供底层的驱动程序。因此,他们可以优化各自数据库产品的驱动程序。 '''JDBC 驱动程序类型:''' # 笫1类驱动程序:'''将JDBC翻译成ODBC''', 然后使用一个ODBC驱动程序与数据库进行通信。 #: 较早版本的Java包含一个这样的驱动程序:'''JDBC/ODBC桥''',不过在使用这个桥接器之前需要对ODBC进行相应的部署和正确的设置。(Java 8已经不再提供JDBC/ODBC桥) # 笫2类驱动程序:由部分'''Java程序和部分本地代码'''组成的,用于与数据库的客户端API进行通信。 #: 在使用这种驱动程序之前,客户端不仅斋要安装Java类库,还需要安装一些与平台相关的代码。 # 第3类驱动程序:'''纯Java客户端类库''',它使用一种与具体数据库无关的协议将数据库请求发送给服务器构件,然后该构件再将数据库请求翻译成数据库相关的协议。这简化了部署,因为平台相关的代码只位于服务器端。 # 第4类驱动程序:'''纯Java类库''',它将JDBC请求直接翻译成数据库相关的协议。 '''JDBC 的典型用法:''' # 传统的客户端/服务器模型:通常是在服务器端部署数据库,而在客户端安装富GUI程序。(在此模型中,JDBC驱动程序应该部署在客户端) #: [[File:JDBC:传统的客户端-服务器应用.png|400px]] # 三层模型:客户端不直接调用数据库,而是调用服务器上的中间件层,由中间件层完成数据库查询操作。 #: [[File:JDBC:三层结构的应用.png|400px]] '''结构化查询语言:'''即'''SQL'''【SQL,读作“ [ˈsiːkwəl] ”】 :[[File:SQL数据类型.png|600px]] == JDBC配置 == #('''驱动程序JAR文件'''): #: 需要准备对应的数据库驱动包:在运行访问数据库的程序时,需要将驱动程序的 JAR 文件包括到类路径中(编译时并不需要这个 JAR 文件)。 #: <syntaxhighlight lang="java"> // 在从命令行启动程序时,只需要使用下面的命令: java -classpath driverPath:. ProgramName </syntaxhighlight> # '''注册驱动器类''': ## 自动注册:许多JDBC的JAR文件会自动注册驱动器类,则可以跳过手动注册步骤。 ##*(包含“'''META-INF/services/java.sql.Driver'''”文件的 JAR 文件可以自动注册驱动器类) ##* 自动注册对于遵循 JDBC4 的驱动程序是必须具备的特性。 ## 手动注册:通过“'''DriverManager'''”来注册驱动器。 ### 在 Java 程序中加载驱动器类:(注册驱动器的静态初始化器) ###: <syntaxhighlight lang="java"> Class.forName("org.postgresql.Driver"); // force loading of driver class </syntaxhighlight> ### 设置“jdbc.drivers”属性: ###* 命令行参数指定这个属性: ###*: <syntaxhighlight lang="java"> java -Djdbc.drivers=org.postgresql.Driver ProgramName </syntaxhighlight> ###* 或,应用中通过调用设置系统属性: ###*: <syntaxhighlight lang="java"> System.setProperty("jdbc.drivers", "org.postgresql.Driver"); </syntaxhighlight> ###* 在这种方式中可以提供多个驱动器,用冒号将它们分隔开: ###*: <syntaxhighlight lang="java"> org.postgresq1.Driver:org.apache.derby.jdbc.ClientDriver </syntaxhighlight> # '''连接到数据库''': ## 在代码中打开数据库连接: ##: <syntaxhighlight lang="java"> String url = "jdbc:postgresql :COREJAVA"; String username = "dbuser"; String password = "secret"; Connection conn = DriverManager.getConnection(url, username, password); </syntaxhighlight> ##: 驱动管理器遍历所有注册过的驱动程序,以便找到一个能够使用数据库 URL 中指定的子协议的驱动程序。 ## 使用数据库配置文件(如“database.properties”) ##: <syntaxhighlight lang="java"> jdbc.drivers=org.postgresql.Oriver jdbc.url=jdbc:postgresql:COREJAVA jdbc.username=dbuser jdbc.password=secret </syntaxhighlight> * '''数据库驱动器名称''':如: *: <syntaxhighlight lang="java"> org.apache.derby.jdbc.ClientDriver org.postgresql.Driver com.mysql.jbdc.driver </syntaxhighlight> * '''数据库URL''':JDBCURL 的一般语法为:“jdbc:subprotocol:other_stuff”,其中subprotocol用于选择连接到数据库的具体驱动程序。 *: URL包含各种与数据库类型相关的参数,例如“主机名”、“端口号”和“数据库名”。如: *: <syntaxhighlight lang="java"> jdbc:derby://1ocalhost:1527/COREJAVA;create=true jdbc:postgresq1:COREJAVA </syntaxhighlight> 示例: <syntaxhighlight lang="java"> try{ Class.forName("com.mysql.jbdc.driver"); Connection conn = DriverManager.getConnection("jdbc:mysql:///spring_day01","root","admin"); String sql = "select * from users where username = ?"; PrepareStatement pre = conn.prepareStatement(sql); pre.setString(1,"小陈"); ResultSet rs = pre.executeQuery(); while(rs.next()){ String username = rs.getString("username"); String password = rs.getString("password"); User user = new User(); user.setUsername(username); user.setPassword(password); System.out.println(user); } }catch(Exception ex){ ex.printStackTrace(); }finally{ rs.close(); pre.close(); conn.close(); } </syntaxhighlight> == 使用JDBC语句 == 执行SQL语句 管理连接、语句和结果集 分析SQL异常 组装数据库 == 执行查询操作 == 预备语句 读写LOB SQL 转义 多结果集 获取自动生成的键 == 可滚动和可更新的结果集 == 可滚动的结果集 可更新的结果集 == 行集 == 构建行集 被缓存的行集 == 元数据 == == 事务 == 用JDBC对事务编程 保存点 批量更新 == 高级SQL类型 == == Web与企业应用中的连接管理 ==
返回至“
核心技术Ⅱ:数据库编程
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息