在项目下创建一个lib目录,把驱动放入该目录下,然后点击右键--->Build Path--->Add to Build Path
代码步骤:
1、加载驱动: Class.forName(驱动)
比如是mysql数据库,则驱动里填写com.mysql.jdbc.Driver(D要大写大写大写)
2、建立连接:
Connection con=DriverManager.getConnection(url,user,pwd)
url格式:协议://IP地址:端口号/数据库名(比如mysql协议就是jdbc:mysql)
user和pwd就是要连接数据库的用户名和密码
3、创建一个sql对象
有两种对象(1、Statement,2、Preparestatement,一般用第二种,第一种 的用得不太方便)
姿势:Preparestatement pre=con.preparestatement(sql)
sql是你要执行的sql语句,条件表达式可以用字段名=?表示
比如 select * from student where name=?
然后用pre.setObject(位置,?)这里的内容跟上面的?对应
如果有多个?,可以用多个pre.setObject(位置,?)来设置对应的?
这里的位置是从1开始,1代表的是第一个?,不是从0开始的!
4、执行sql语句
pre.executeUptate();---->这是执行增删改语句
pre.executeQuery();---->这是执行的查询语句,返回的是一个Resultset的结 果集
5,、处理结果
增删改返回的是一个int类型的值,如果返回的非0,则代表执行的语句运行成 功,如果返回的是0,则代表执行的语句运行失败,可以根据返回的数值来做 一些处理
查询返回的是一个结果集,可以遍历这个结果集,来得到查询多行数据
6、释放资源
后开的先关,pre.close();con.close();
制作JDBC工具类方法
代码如下:
public class JUtil {
//设置加载驱动
private static String driver="com.mysql.jdbc.Driver";
//设置url
private String url="jdbc:mysql://192.168.1.13:3306/student";
//设置数据库账号和密码
private String user="root";
private String pwd="123456";
//设置全局变量
private Connection con=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
//使用一个静态代码块,来加载驱动(创建工具类对象时,只在第一次创建的时候执行,这里也只用加载一次)
static{
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//建立与数据库的连接
public void getcon(){
try {
con=DriverManager.getConnection(url,user,pwd);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//执行增删改的sql语句,第一个参数是sql语句
//比如insert into student values(?,?,?)
//第二个参数为对应?位置上的的值,遍历这个数组,把数组里的值跟?对应上
//然后返回一个int类型的值,来判断执行sql是否成功
public int update(String sql,Object[] obj){
int k=0;
getcon();
try {
ps=con.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
ps.setObject((i+1), obj[i]);
}
k=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
close();
return k;
}
//执行查询的sql语句,参数同上,不过返回的是一个resultset的结果集
public ResultSet select(String sql,Object[] obj){
getcon();
try {
ps=con.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
ps.setObject((i+1), obj[i]);
}
rs=ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
//最后释放资源,执行增删改的时候是已经执行完了可以先释放资源再返回处理的结果
//而执行查询的时候如果先释放了资源,返回的resultset就为空了
//所以执行增删改以后可以不用调用close方法,执行查询后要调用close方法
public void close(){
try {
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(con!=null)con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}