一:相关概念
- 什么是JDBC
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
从根本上说,JDBC是一种规范,它提供的接口,一套完整的,可移植的访问底层数据库的程序 - 数据库驱动
我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数据库打交道。其实也就是数据库厂商的JDBC接口实现,即对Connection等接口的实现类的jar文件。
二:常用接口
具体每个接口中有什么常用的方法,这里就不过多的解释。可以通过查看JDK API进行查看和多多练习。也可以在这个博客里面学习(http://www.cnblogs.com/erbing/p/5805727.html)
三:使用jdbc连接数据库
1. 连接数据库得到Connection就算成功
/*一:得到Connnection
* 1.准备四大参数
* 2.加载驱动类
* 3.得到Connection
* */
//准备四大参数
String driveClassName = "com.mysql.jdbc.Driver";
//jdbc协议的格式 jdbc:工商的名称:子协议(由工商来规定)
//对mysql而言,他的自协议结构://主机:端口号/数据库名称
String url = "jdbc:mysql://localhost:3306/student";
//这是我们自己安装数据库时所设的账号密码
String username = "admin";
String password = "admin";
//加载驱动类
try {
Class.forName(driveClassName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//使用DriverManager以及剩下的三个参数,得到Connectioon
try {
Connection conn = DriverManager .getConnection(url,username,password);
//System.out.println("数据库连接成功");
} catch (SQLException e) {
e.printStackTrace();
}
对于第一次连接的用户来说,即便这样操作还是会有点问题。这里我后面再单独讲
2. 对数据库进行增 删 改
/*对数据进行增删改
* 1.通过Connection对象创建Statement
* 2.调用他的 int executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数
*
* */
//通过Connection得到Statement
Statement stmt = conn.createStatement();
//使用Statement发送sql语句
//String sql = "insert into xinguan values ('002','王五','男')";
//String sql = "delect from xinguan where id='2'";
String sql = "update xinguan set id='003',ename='林志玲',sex='女' where ename='王五'";
int r = stmt.executeUpdate(sql);
System.out.println(r);
3.对数据进行查询
//对数据进行查询
//1-调用Statement的ResultSet
String sql = "select*from xinguan";
ResultSet rs = stmt.executeQuery(sql);
//2-解析ResultSet 把光标移到第一行,可以调用next()方法实现
while(rs.next()){
int id = rs.getInt("id");//通过列编号来获取该列的值
String ename = rs.getString("ename");//获取列名是ename的字段值
String sex = rs.getString("sex");//获取列名是sex的字段值
输出结果
关闭资源
关闭资源采用的是倒关–数据库连接(Connection)非常耗资源,尽量晚创建,尽量早的释放
1. rs.close();
2. stmt.close();
3.con.close();
编译时可能遇到的问题
ava.lang.ClassNotFoundException: com.mysql.jdbc.Driver
atjava.NET.URLClassLoader$1.run(Unknown Source)
atjava.net.URLClassLoader$1.run(Unknown Source)
atjava.security.AccessController.doPrivileged(Native Method)
atjava.Net.URLClassLoader.findClass(Unknown Source)
atjava.lang.ClassLoader.loadClass(Unknown Source)
atsun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
atjava.lang.ClassLoader.loadClass(Unknown Source)
atjava.lang.Class.forName0(Native Method)
atjava.lang.Class.forName(Unknown Source)
这并不是说你的代码有什么问题,而是你没有导入mysql加载的驱动包.具体怎么下载和导入驱动包可以在这里进行查看(http://www.cnblogs.com/taoweiji/archive/2012/12/11/2812295.html)