javase的JDBC用法小总结

来源:互联网 发布:php 采集今日头条 编辑:程序博客网 时间:2024/05/29 17:25

在项目下创建一个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";//设置urlprivate 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 blocke.printStackTrace();}}//建立与数据库的连接public void getcon(){try {con=DriverManager.getConnection(url,user,pwd);} catch (SQLException e) {// TODO Auto-generated catch blocke.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 blocke.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 blocke.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 blocke.printStackTrace();}}}


1 0
原创粉丝点击