java数据库编程jdbc_Java 之 数据库编程(JDBC)

1.JDBC

a.定义:是一种用于执行SQL语句的Java API,它由一组用Java 语言编写的类和接口组成

b.操作步骤:

①加载驱动——告诉驱动管理器我们将使用哪一个数据库的驱动包

Class.forName("com.mysql.jdbc.Driver"); //try - catch

②操作JDBC API完成数据库动作

常用方法:Connection:连接

Statement:语句对象

ResultSet:查询语句返回的结果集

//2-1、获取连接

Connection con = null;try{

con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test134" +

"?useUnicode=true&characterEncoding=utf8&useSSL=false", "root", "root");//2-2、书写SQL语句---字符串拼接、

String sql = "insert into t_class(f_classname,f_teacher) values('"+className+"','"+teacherName+"')";//2-3、获取语句对象---Statement对象

Statement state =con.createStatement();//2-4、执行语句对象---所有的DML语句,全部执行executeUpdate()方法

int row = state.executeUpdate(sql);    //返回的int代表影响了多少行!

} catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{//2-5、关闭连接

if(con != null){try{

con.close();

}catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

注:以上是 增、删、改 的方法,查询需要用到一下语句

ResultSet rs = state.executeQuery(sql);

c. url:

①定义:统一资源定位符

②样式:协议 : // ip地址 : 端口号 / 服务

jdbc:mysql://127.0.0.1:3306/test134

2.PreparedStatement——预编译语句

a.特点:①可以完全替代statement,执行executeUpdate()和executeQuery()

②解决SQL注入问题

③因为在执行之前就把语句和String SQL绑定上(交给数据库预先编译了),执行时不能再改变SQL的结构

b.注意:①?是用来替代语句中的数据值的位置,不能替代跟结构有关的任何内容

②使用?替代字符串值的时候,不能打引号

③不要滥用预编译,预编译语句过多也会影响数据库性能;当数据值是由外部文本输入的时候,才用它

String sql = "select * from t_user where f_username=? and f_password=?";

PreparedStatement ps=con.prepareStatement(sql);

ps.setString(1,name);

ps.setString(2, pwd);

ResultSet rs= ps.executeQuery();

3.事务——Transaction

a.定义:是JDBC中的一种,让多条SQL语句作为一个整体,必须整体成功或整体失败

b.作用:主要控制的是DML语句,需要保证数据的完整性;DQL语句可以不参与事务

c.步骤:事务操作分为三步——这三步都由一个对象完成——Connection

1.开启事务——设置自动提交为假

con.setAutoCommit( false );

2.整体提交

con.commit();

3.在Catch块中,整体回滚

con.rollback;

你可能感兴趣的:(java数据库编程jdbc)