- 浏览: 210059 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
liu47a:
1.首尾相连2.8天3.19990014.“我不会被烧死,我将 ...
思维测试题一 -
liu47a:
3 1999001
思维测试题一 -
拓子轩:
...
servlet基础 -
ss321pp076:
总结的很全面但如果有的地方写得更加详细对初学者来理解帮助要大些 ...
servlet基础 -
拓子轩:
Mongodb数据库入门
1.JDBC简介
1.1 JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构成的API。
1.2 J2SE的一部分,由java.sql, javax.sql包组成
1.3 应用程序、JDBC API、数据库驱动及数据库之间的关系
应用程序
JDBC
--------------------------------------------------------
| | |
MySQL Driver Oracle Driver DB2 Driver
| | |
MySQL Oracle DB2
2. 连接数据库的步骤
2.1 注册驱动(只做一次)
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
2.2 建立连接(Connection)
Connect conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc",user,password);
2.3 创建语句(Statement)
Statement st = conn.createStatement();
2.4 执行语句(ResultSet)
ResultSet rs = st.excuteQuery("select * from user");
2.5 处理结果
while(rs.next()) {
System.out.println(rs.getObject(1)+rs.getObject(2)+rs.getObject(3)+rs.getObject(4));
}
2.6 释放资源
rs.close(); st.close(); conn.close();
3. 注册驱动
3.1 DriverManager.registerDriver(new com.mysql.jdbc.Driver());
3.2 System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
3.3 Class.forName("com.mysql.jdbc.Driver"); //推荐方式
4. 创建连接
//url格式:JDBC:子协议:子名称//主机名:端口/数据库名?属性名=属性值&...
String url = "jdbc:mysql://localhost:3306/jdbc"
//user,password可用"属性名=属性值"的方式告诉数据库,其它参数如useUnicode=true&characterEncoding=GBK
String user = "root";
password = "";
Connection conn = DriverManager.getConnection(url, user, password);
5. 释放资源
5.1 释放ResultSet, Statement, Connection.
5.2 数据库连接(Connection)是非常稀有的资源,用完后必须马上释放,如果Connection不能及时正确的关闭将导致系统宕机。Connnection的使用原则是尽量晚创建,尽量早的释放。
5 数据库连接模板
pubic class Base { static void template() throws Exception { Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); st = conn.createStatement(); rs = st.executeQuery("select * from user"); while(rs.next()) { System.out.println(rs.getObject(1)+rs.getObject(2)+rs.getObject(3)+rs.getObject(4)); } }finally{ JdbcUtils.free(rs, st, conn); } } } public final class JdbcUtils { private static String url = "jdbc:mysql://localhost:3306/jdbc"; private static String user = "root"; private static String password = ""; private JdbcUtils() { } static { try { Class.forName("com.mysql.jdbc.Driver"); }catch(ClassNotFoundException e) { throw new ExceptionInInitializerError(e); } } public static Connection getConnection() throws SQLExeption { return DriverManager.getConnection(url,user,password); } public static void free(ResultSet rs,Statement st,Connection conn) { try{ if(rs != null) rs.close(); }catch(SQLException e) { e.printStackTrack(); }finally { try { if(st != null) st.close(); }catch(SQLException e) { e.printStackTrack(); }finally { if(conn != null) try{ conn.close(); }catch(SQLException e) { e.printStackTrack(); } } } } }
二. JDBC
1. CRUD
1.1 Read
String sql = "select id, name, money, birthday from user";
rs = st.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getObject("id") + "\t"
+ rs.getObject("name") + "\t"
+ rs.getObject("birthday") + "\t"
+ rs.getObject("money"));
}
1.2 Create
String sql = "insert into user(name,birthday,money) values ('name1','1987-01-01',400);
int i = st.executeUpdate(sql);
System.out.println("i=" + i);
1.3 Update
String sql = "update user set money=money+10";
int i = st.executeUpdate(sql);
System.out.println("i=" + i);
1.4 Delete
String sql = "delete from user where id>4";
int i = st.executeUpdate(sql);
System.out.println("i=" + i);
2. SQL注入,PreparedStatement和Statement
2.1 在SQL中包含特殊字符或SQL得关键字(如:'or 1 or')时,Statement将出现不可预料的结果(出现异常或查询的结果不正确),可用PreparedStatement来解决。
2.2 PreperedStatement(从Statement扩展而来)相对Statement的优点:
没有SQL注入的问题
Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出
数据库和驱动可以对PreperedStatement进行优化(只有在相关联的数据库连接没有关闭的情况下有效)
2.3 示例
String sql = "select id, name, money, birthday from user where name=?";
ps = conn.prepareStatement(sql);
ps = setString(1,name); //把sql中的第一个"?"用"name"替换
rs = ps.executeQuery();
3. jdbc中的数据类型与日期问题
3.1 把java中的日期数据转化为mysql中的日期数据
String sql = "insert into user(name,birthday,money) values(?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1,name);
ps.setDate(2,new java.sql.Date(birthday.getTime()));
ps.setFloat(3,money);
ps.executeUpdate();
3.2 把mysql中的日期数据转化为java中的日期数据
rs = st.executeQuery("select birthday from user where id=" + id);
while(rs.next()) {
birthday = new Date(rs.getDate("birthday").getTime()); //birthday = rs.getDate("birthday").getTime()
}
4. jdbc中大文本数据对象的存取
4.1 大文本数据对象的存储
String sql = "insert into clob_test(big_text) values (?)";
ps = conn.prepareStatement(sql);
File file = new File("src/xxx.java");
Reader reader = new BufferedReader(new FileReader(file));
ps.setCharacterStream(1,reader,(int)file.length());
int i = ps.executeUpdate();
reader.close();
System.out.println("i=" + i);
4.2 大文本数据对象的获取
rs =st.executeQuery("select big_text from clob_test");
while(rs.next()) {
Clob clob = rs.getClob(1);
Reader reader = clob.getCharacterStream();
File file = new File("yyy.java");
Writer writer = new BufferedWriter(new FileWriter(file));
char[] buff = new char[1024];
for(int i=0;(i=reader.read(buff))>0;) {
writer.write(buff,0,i);
}
writer.close();
reader.close();
}
5. jdbc访问二进制类型的数据
5.1 几种特殊且比较常用的类型(详细信息见java.sql.Types)
//1.DATA,TIME,TIMESTAMP----->date, time, datetime
ps.setDate(i,d); ps.setTime(i,t); ps.setTimestamp(i,ts); //存
rs.getDate(i); rs.getTime(i); rs.getTimestamp(i); //取
//2. CLOB---->text
ps.setCharacterStream(index,reader,length); //存
ps.setString(i,s); //存
reader = rs.getCharacterStream(i); //取
reader = rs.getClob(i).getCharacterStream(); //取
string = rs.getString(i); //取
5.2 示例
//存储二进制类型的数据 String sql = "insert into blob_test(big_bit) values(?)"; ps = conn.prepareStatement(sql); File file = new File("IMG_0001.jpg"); InputStream in = new BufferedInputStream(new FileInputStream(file)); ps.setBinaryStream(1,in,(int)file.length()); int i = ps.executeUpdate(); in.close(); System.out.println("i=" + i); //读取二进制类型的数据 rs = st.executeQuery("select big_bit from blob_test"); while(rs.next()) { InputStream in = rs.getBinaryStream(1); File file = new File("IMG_0001.jpg"); OutputStream out = new BufferedOutputStream(new FileOutputStream(file)); byte[] buff = new byte[1024]; for(int i=0;(i=in.read(buff))>0;) { out.write(buf,0,i); } out.close(); in.close(); }
发表评论
-
笔面
2012-08-29 21:49 9051. 什么数据适合放在缓存中 a. 很少被修改的数据 b. ... -
oracle笔记
2012-01-22 09:27 1039数据库的基本概念1.数 ... -
DOM笔记
2012-01-22 09:23 1023DOM一. DHTML1. JavaScript将 ... -
oracle基础
2012-01-21 22:54 7763个默认的用户(oracle9) sys chang ... -
Python基础
2012-01-21 09:47 9151.提示用户输入 input('Enter an integ ... -
WEB开发笔记
2012-01-19 20:04 1198第一章 Java Web开发工具的安装与使用1.安装JDK 下 ... -
AJAX学习笔记
2012-01-19 20:05 10791.基于标准的一些好习惯1.1 标签名要小写1.2 标签必须关 ... -
XML
2012-01-10 22:01 875什么是配置文件为什么 ... -
java web开发
2012-01-10 21:42 1292第一章 Java Web开发工具的安装与使用1.安装JDK 下 ... -
HTTP协议详解
2012-01-10 21:30 1232HTTP简介1.WEB浏览器与WEB ... -
JPA开发
2012-01-10 21:20 21871. 什么是JPA 1. JPA(Java Persiste ... -
Linux学习笔记
2011-12-25 21:30 1094一、常用命令1.lsls / 查 ... -
servlet基础
2011-12-24 07:29 1977一. 背景知识1. 常用的Web服务器 ~ IIS ... -
Eclipse常用快捷键
2011-12-22 22:45 5861. 【ALT+/】 此快捷键为 ...
相关推荐
JDBC基础JDBC基础JDBC基础JDBC基础JDBC基础JDBC基础JDBC基础JDBC基础JDBC基础
"jdbc 基础的详解与总结" jdbc 是一套协议,由 Sun 公司定义的一组接口,由数据库厂商来实现,并规定了 Java 开发人员访问数据库所使用的方法的调用规范。jdbc 的实现是由数据库厂商提供,以驱动程序形式提供。jdbc...
**JDBC基础实例详解** Java Database Connectivity (JDBC) 是Java平台中用于与关系数据库进行交互的一种标准接口。它是Java编程语言的一部分,允许应用程序通过Java代码执行SQL语句,实现数据的增删改查操作。对于...
**JDBC基础知识** Java Database Connectivity (JDBC)是Java编程语言中用于标准地访问数据库的API。它由一组Java类和接口组成,允许Java应用程序连接到各种类型的数据库系统,包括Oracle、MySQL、SQL Server等。...
JDBC基础.chmJDBC基础.chm
**JDBC基础学习目标:** 1. **理解Java中的数据库连接**:了解Java如何通过JDBC API与各种类型的数据库(如关系型、面向对象关系型和面向对象数据库)建立连接。 2. **掌握JDBC API**:熟悉java.sql包中的核心类和...
**JDBC基础知识详解** Java Database Connectivity (JDBC) 是Java平台上的一个标准API,用于与关系型数据库进行交互。它是Java开发者访问数据库的唯一、统一的接口,由Sun Microsystems(现已被Oracle收购)定义,...
jdbc基础篇教程md版:这份markdown格式的教程详细介绍了jdbc的基础概念、配置方法以及如何通过jdbc进行数据库的增删改查(crud)操作。教程内容涵盖了jdbc驱动的加载、数据库连接的建立、sql语句的执行以及结果集的...
了解JDBC的概念及必要性 了解JDBC驱动程序类型 理解JDBC 程序的结构 运用JDBC进行数据库编程
### JDBC基础知识总结 #### 一、概述 JDBC(Java Database Connectivity)是一种标准的Java API,用于连接并操作各种类型的数据库。它从物理结构上说就是一套Java语言访问数据库的接口集合,本质上则是调用者...
### JDBC基础教程之ResultSet对象详解 #### 一、ResultSet对象概览 `ResultSet`对象是Java Database Connectivity (JDBC) API中的一个核心组件,用于处理SQL查询结果。它充当了一个临时的数据存储,其中包含了所有...
### JDBC基础教程之连接知识点详解 #### 一、Connection对象及其作用 - **Connection对象**:在JDBC中,`Connection`对象代表了一个与数据库之间的连接。通过这个连接,应用程序可以执行SQL语句并获取结果集。 - *...
**JDBC基础入门详解** Java Database Connectivity(JDBC)是Java平台中用于与数据库交互的一组接口和类,它是Java标准API的一部分,使得Java开发者能够访问各种类型的数据库系统。本篇将详细介绍JDBC的基础知识,...
### JDBC基础教程之概述 #### 一、JDBC简介与概念理解 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC的...
【JDBC基础】 JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的标准Java API,它允许Java开发者在程序中执行SQL语句并与各种数据库进行交互。JDBC为Java程序员提供了一种统一的方式来连接和操作...
在学习JDBC基础时,主要涉及以下几个关键知识点: 1. **快速入门**: - 安装Java和JDBC:确保你拥有与JDBC兼容的JDK版本,通常JDBC会随JDK一起安装。 - 安装驱动程序:根据选择的数据库,安装相应的JDBC驱动,如...
Java操作数据库JDBC基础demo是Java开发者必备的技能之一,JDBC(Java Database Connectivity)是Java语言连接数据库的标准API,它允许Java程序与各种不同类型的数据库进行交互。在这个基础demo中,我们将涵盖JDBC的...
**JDBC基础——深入理解与实践** Java Database Connectivity(JDBC)是Java平台中用于与关系型数据库交互的标准API,它允许Java程序通过编写Java代码来执行SQL语句,进行数据查询、插入、更新和删除等操作。了解并...