JDBC原生态代码

JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet!

DriverManger(驱动管理器)的作用有两个:

l  注册驱动:这可以让JDBC知道要使用的是哪个驱动;Class.forName(“com.mysql.jdbc.Driver”)

l  获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb1”,”root”,”123”);

 

 

Connection对象表示连接,与数据库的通讯都是通过这个对象展开的:

l  Connection最为重要的一个方法就是用来获取Statement对象;

 

Statement是用来向数据库发送SQL语句的,这样数据库就会执行发送过来的SQL语句:

l  void executeUpdate(String sql):执行更新操作(insert、update、delete等);

l  ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;

 (后面我们使用的都是PrepareStatement:预编译的语句,它的好处有三点,防止sql的攻击,提高代码可读性,提高效率)

PreparedStatement最大的好处就是在于重复使用同一模板,给予其不同的参数来重复的使用它。这才是真正提高效率的原因。

 

ResultSet对象表示查询结果集,只有在执行查询操作后才会有结果集的产生。结果集是一个二维的表格,有行有列。操作结果集要学习移动ResultSet内部的“行光标”,以及获取当前行上的每一列上的数据:

 

public static void main(String[] args) {

             Connection connection = null;

             PreparedStatement preparedStatement = null;

             ResultSet resultSet = null;

            

             try {

                 //1、加载数据库驱动

                 Class.forName("com.mysql.jdbc.Driver");

                 //2、通过驱动管理类获取数据库链接

                 connection =  DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "password");

                 //3、定义sql语句 ?表示占位符

             String sql = "select * from user where username = ?";

                 //4、获取预处理statement

                 preparedStatement = connection.prepareStatement(sql);

                 //5、设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值

                 preparedStatement.setString(1, "王五");

                 //6、向数据库发出sql执行查询,查询出结果集

                 resultSet =  preparedStatement.executeQuery();

                 //7、遍历查询结果集

                 while(resultSet.next()){

                     System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));

                 }

             } catch (Exception e) {

                 e.printStackTrace();

             }finally{

                 //8、释放资源

                 if(resultSet!=null){

                     try {

                         resultSet.close();

                     } catch (SQLException e) {

                         // TODO Auto-generated catch block

                         e.printStackTrace();

                     }

                 }

                 if(preparedStatement!=null){

                     try {

                         preparedStatement.close();

                     } catch (SQLException e) {

                         // TODO Auto-generated catch block

                         e.printStackTrace();

                     }

                 }

                 if(connection!=null){

                     try {

                         connection.close();

                     } catch (SQLException e) {

                         // TODO Auto-generated catch block

                         e.printStackTrace();

                     }

                 }

 

             }

 

        }

posted on 2017-03-20 11:35  Hennessy_Road  阅读(188)  评论(0编辑  收藏  举报