黑马程序员——JAVA(JDBC)
来源:互联网 发布:mac怎么共享 编辑:程序博客网 时间:2024/06/06 01:49
------- android培训、java培训、期待与您交流! ----------
JDBC(java数据库连接)
可以和各个数据库进行连接,极大的体现了java可移植性的设计;
(一).JDBC驱动分类
1..JDBC-ODBC桥驱动 (性能低) sql server
2.JDBC本地驱动(性能高,移植性不好)使用各个数据库生产上提供的JDBC驱动程序需配置这些驱动程序,配置 classpath
3.JDBC网络驱动 (灵活性高)
4.本地协议纯JCBC驱动
(二).JDBC的主要操作类及接口
DriverManager 用于管理JDBC驱动程序
Connection 与特定数据库建立连接,一个连接就是一个会话
连接后可执行sql语句并获得检索
Statement 执行静态sql语句,并获得结果
PreparedStatement 创建一个可编译的sql语句对象,该对象可以被多次
执行,提高执行效率,是statement的子接口
ResultSet 用于创建表示sql语句检索结果的结果集,用户通过结果集完成
数据库的访问
sql.Date 为java.util.Date的一个子集,用于表示与sql date相同的日期
类型,该日期不包括时间
Timestamp 标准java.util.Date类的扩展,用于表示sql时间戳,并增加了一个能加了个表示纳秒的时间域
CallbleStatement 用于执行sql存储过程
(三).数据库操作过程:
1.打开数据库服务
2.连接数据库,需输入用户名、密码
3.操作数据库;建表,增、删、改、查
4.关闭数据库
DriverManager:取得数据库连接
Connection:每一个Connection的实例化都表示一个数据库连接
数据库的操作:Statement、PreparedStatement
数据库的查询:ResultSet
调用存储过程:CallableStatement
(四).简单的sql语句
创建数据库: create database数据库名;
删除数据库: drop database数据库名称;
使用数据库: USE 数据库名;
创建表: create table表名(
字段名1 字段类型 [DEFAULT默认值][约束]
字段名2 字段类型 [DEFAULT默认值][约束]
..................
)
例:
CREATE TABLE user(
id INT AUTO_INCREMENT PRIMARY KEY ,
name VARCHAR(30) NOT NULL ,
password VARCHAR(32) NOT NULL ,
age INT NOT NULL ,
sex VARCHAR(2) DEFAULT '男' ,
birthday DATE
) ;
删除表: drop table表名
查看表结构: desc表名
查看全部数据库:SHOW DATABASES;
查看一个数据库的全部表:SHOW TABLES;
对表的增、删、改、查
INSERT INTO 表名(字段名1,字段名2,字段名3,字段名4) VALUES (value1,value2,value3,value4) ;
DELETE FROM 表名 WHERE 字段1=value ;
UPDATE 表名 SET 字段1=value,字段2=value WHERE字段3=value3;
SELECT 字段1,字段2 FROM表名 ;
模糊匹配符进行查询:
例:SELECT * FROM user WHERE name LIKE '%m%' OR password LIKE '%m%' ;
SELECT * FROM user WHERE name LIKE '%m%' OR password LIKE '%m%' LIMIT 10,5 ;
(五).JDBC操作步骤
1.加载数据库驱动程序:各个数据库都会提供JDBC的驱动程序开发包,然后直接配 置到classpath路径即可;
2.连接数据库:每个数据库的地址都不一样,使用Class.forName()语句可以加载一个驱动程序加载时必须是完整的“包.类”:org.gjt.mm.mysql.Driver如果出错说明配置classpath有错
3.使用语句进行数据库操作:可以使用标准的sql语句,也可使用数据库自己提供的语句
驱动正常加载后,就可以通过DriverManager类进行数据库的连接操作了
主要方法:
public static Connection getConnection(String url)
public static Connection getConnection(String url,String user,String password)
mysql连接地址格式:jdbc:mysql://ip地址:端口号/数据库名称
//localhost:3306/user
4.关闭数据库连接:数据库操作完之后需要关闭连接一释放资源。
(六).数据库的具体操作
1.Statement接口:
数据库连接后,想要对数据库进行操作,可使用Statement接口完成,此接口可使用Connection接口提供的createStatement()方法实例化。
常用方法:
int executrUpdate(String sql) 执行数据库更新的sql语句
ResultSet executeQuery(String sql) 进行数据库查询操作,并返回结果集对象
Void addBatch(String sql) 增加一个执行的sql语句
Void close() 关闭Statement操作
Boolean execute(String sql) 执行sql语句
2.PreparedStatement接口
PreparedStatement是Statement的自己口,属于预处理操作,与直接使用Statement不同的是,PrepareStatement在操作时,是先在数据表之间准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,二十之后再进行设置
常用方法:
int executeUpdate() 执行设置的预处理SQL语句
void setInt(int index,int x) 指定要设置的索引编号,并设置整数内容
void setString(int index,String x) 指定设置的索引编号,设置字符串型内容
void setDate(int index,Date x) 指定要设置的索引编号,并设置java.sql.Date内容
在设置日期的格式时需注意:setDate()方法,此方法可以设置日期内容,是
此方法是用时,后面的Date类型变量时java.sql.Date,而不是java.util.Date,
所以如果要将一个java.util.Date类型的内容变为java.sql.Date类型的内容应
该是用一下语句:
String birthday=”2007-08-27”;
java.util.Date temp = new SimpleDateFormat(“yyyy-MM-dd”).parse(birthday);
java.sql.Date bir=new java.sql.Date(temp.getTime());
一般字开发应用中都不会是用Statement,因为其采用的是拼凑的sql语句形式。
例:String sql = "INSERT INTO user(name,password,age,sex,birthday) VALUES (?,?,?,?,?) " ;
Class.forName(DBDRIVER) ; //加载驱动程序
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
pstmt = conn.prepareStatement(sql) ; //实例化PreapredStatement对象
pstmt.setString(1,name) ;
pstmt.setString(2,password) ;
pstmt.setInt(3,age) ;
pstmt.setString(4,sex) ;
pstmt.setDate(5,bir) ;
int t = pstmt.executeUpdate() ; //执行更新
2.ResultSet接口
是用SQL中的SELECT语句可以讲数据库的全部结果查询出来,在JDBC的操作中数据库的所有查询记录将是用ResultSet进行接收,并是用ResultSet显示内容;
送next()判断是否还有内容,取出内容用:getInt、getString、getDate、getFloat;
去内容是可是用字段名取出,也可使用编号取出:
根据字段名:
String sql = "SELECT id,name,password,age,sex,birthday FROM user" ;
Class.forName(DBDRIVER) ; //加载驱动程序
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
stmt = conn.createStatement() ;
rs = stmt.executeQuery(sql) ;
while(rs.next()){ //依次取出数据
int id = rs.getInt("id") ; //取出id列的内容
String name = rs.getString("name") ; //取出name列的内容
String password = rs.getString("password") ; //取出password列的内容
int age = rs.getInt("age") ; //取出age列的内容
String sex = rs.getString("sex") ; //取出sex列的内容
java.util.Date d = rs.getDate("birthday") ; //取出birthday列的内容
System.out.print("编号:" + id + ";") ;
System.out.print("姓名:" + name + ";") ;
System.out.print("密码:" + password + ";") ;
System.out.print("年龄:" + age + ";") ;
System.out.print("性别:" + sex + ";") ;
System.out.println("生日:" + d + ";") ;
System.out.println("-----------------------") ;
}
根据编号:
String sql = "SELECT id,name,password,age,sex,birthday FROM user" ;
Class.forName(DBDRIVER) ; //加载驱动程序
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
stmt = conn.createStatement() ;
rs = stmt.executeQuery(sql) ;
while(rs.next()){ //依次取出数据
int id = rs.getInt(1) ; //取出id列的内容
String name = rs.getString(2) ; //取出name列的内容
String password = rs.getString(3) ; //取出password列的内容
int age = rs.getInt(4) ; //取出age列的内容
String sex = rs.getString(5) ; //取出sex列的内容
java.util.Date d = rs.getDate(6) ; //取出birthday列的内容
System.out.print("编号:" + id + ";") ;
System.out.print("姓名:" + name + ";") ;
System.out.print("密码:" + password + ";") ;
System.out.print("年龄:" + age + ";") ;
System.out.print("性别:" + sex + ";") ;
System.out.println("生日:" + d + ";") ;
System.out.println("-----------------------") ;
}
------- android培训、java培训、期待与您交流! ----------- 黑马程序员——JAVA(JDBC)
- 黑马程序员——JDBC编程步骤
- 黑马程序员——java基础——JDBC基础操作
- 黑马程序员—java总结
- 黑马程序员—java多线程
- 黑马程序员—Java GUI
- 黑马程序员—JAVA多线程
- 黑马程序员—JAVA枚举
- 黑马程序员—JAVA内省
- 黑马程序员—JAVA注解
- 黑马程序员—JAVA泛型
- 黑马程序员—Java 反射
- 黑马程序员—Java概述
- 黑马程序员—Java基础知识
- 黑马程序员—java多线程
- 黑马程序员—JAVA基础
- 黑马程序员—Java多线程
- 黑马程序员—Java泛型
- 一个奇怪的不可中断进程
- 修改exe
- spring学习
- Proactor和Reactor模式
- POJ 1580 String Matching 很纠结,代码写了很多,还是过了,再对比一下人家的代码,惭愧
- 黑马程序员——JAVA(JDBC)
- [FI] SAP 关于标准成本、计划成本、目标成本、实际成本
- Luence认识1
- 毕业小记
- Java中时间间隔的计算(以前的时间与现在的时间间隔,类似于新浪微博显示发表时间的方式)
- Rational Rose 2003 下载及破解方法
- 程序员技术练级攻略
- 黑马程序员_JDk1.5新特性之_泛型
- WebKit网页布局实现之主要架构篇