数据库入门梳理

1.连接数据库,用connection对象

   Class.forName("com.mysql.jdbc.Driver");//注册驱动,固定代码

  String url="jdbc:mysql://localhost:3306/first";
  String user="root";
  String password="admin";

   Connection connection = DriverManager.getConnection(url, user, password);

//根据数据库的用户名,密码,地址创建一个connection对象

2.像数据库发送指令,用statement对象,statement对象由connection对象创建

    statement=connection.createStatement();

    String sql="  ";    //这里就是要执行的数据库指令

    statement.executeUpdate(sql);   //将数据库指令发送给数据库

3.ResultSet对象  得到数据库中的数据,ResultSet由statement对象创建

   ResultSet rs=statement.executeQuery(sql);

 while(rs.next())     //遍历数据,使用方法类似迭代器
  {
   System.out.println(rs.getString("name"));
  }

4.PreparedStatement对象,是statement类的一个子类

   4.1解决sql注入问题

   4.2 提高效率

   4.3 简化书写

5.Class.forName("com.mysql.jdbc.Driver");  //注册驱动

   注册驱动的目的:告诉操作系统我连接的是哪个数据库,操作系统根据这个调用不同的驱动程序

   为什么一句话就能注册驱动?

因为class.forname("xxxxx")让jvm加载一个类

加载的过程一定会执行类的静态代码块,而静态代码块中代码如下 :

  public class MyJDBCDriver implements Driver {
     static {
       DriverManager.registerDriver(new MyJDBCDriver());
    }
    }   也就是说执行Class.forName("com.mysql.jdbc.Driver");  也就执行了DriverManager.registerDriver(new MyJDBCDriver());
  6.代理 //声明代理模板代码 Object xx=  Proxy.newProxyInstance(
                      Main.class.getClassLoader(),
                          new Class[]{Connection.class},
                       //声明执行句柄,只对close方法设置拦截
                              new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //在这里执行被代理类的方法 }
           return null;
});

猜你喜欢

转载自542255641.iteye.com/blog/2207801