准备工作:
a:将mysql-connector-java-5.1.7-bin.jar包在java工程中BuildPath的Add External JARS添加
b:在MySQL中添加一个student数据库,新建一个table,属性有id,name,sex
第一步:加载驱动类(如果是Oracle就省略此步,ojdbc6.jar可以自动加载驱动)
作用:初始化加载JDBC类到java虚拟机
需要处理异常,用try catch处理
第二步:建立连接
参数含义:
url:表示要连接的数据地址
username:数据库的用户名
password:数据库的密码
也需要处理异常,用try catch处理
第三步:执行SQL语句
1、创建Statement类,需要导包
1.1三种Statement类:
a:Statement:
由createStatement创建,用于编译并发送简单的sql语句(不带参数)
注意:使用Statement容易发生SQL注入风险,容易被人在外部修改数据库的内容,所以不提倡使用
b:PreparedStatement:
继承自Statement接口,由PreparedStatement创建,用于编译并发送含有一个或多个输入参数的sql语句,PreparedStatement对象比Statement对象的效 率更高,并且有预处理的过程,通过占位符?来过滤掉不符合要求的条件,可以防止SQL注入,所以一般使用PreparedStatement
c:CallableStatement:
继承自PreparedStatement接口,由方法prePareCall创建,用于调用存储过程
1.2常用的Statement方法
a:execute():运行语句,返回是否有结果集,是布尔型,结果为ture或false
boolean result = ps.execute();
b:executeQuery():运行select语句,返回resultSet结果集
需要创建结果集ResultSet(要导包),储存查询到的每条数据
next()(游标原理):游标头默认指向第一条数据,如果下面还有数据,当查询到结果后游标就指向第二条数据,以此类推,直到下一条数据不存在,就返回false,游标就停止移动
c:executeUpdate():运行insert,update,delete语句,返回更新的行数
第四步:关闭连接close()
每一个Connection连接和(Prepared)Statement和ResultSet都需要在finally中关闭,而且都需要try catch处理,并且try要分开写
还需要给Connection和PreparedStatement和ResultSet赋初值为null
注意:遵循ResultSet–>Statement–>Connection关闭连接顺序
常见的jdbc错误:
a:ClassNotFoundException:驱动类未找到
b:java.sql.SQLException:No suitable driver found for:URL错误
c:invalid username/password:用户名或密码错误
d:java.sql.SQLSyntaxErrorException:无效SQL语句:sql语句错误
e:java.sql.SQLIntergrityConstrainViolationException:违反唯一约束条件:主键冲突