zoukankan      html  css  js  c++  java
  • 数据库与java的连接

    jdbc: java database connection,也就是java的数据库连接。
    作用: 完成数据库数据和内存数据的交互。

    为了屏蔽不同数据库的差异,在内存和各种数据库之间建立了一个接口标准。每个厂商按照接口的标准来实现接口类。


    jdbc 是java连接数据库的一套标准。该标准中定义了一系列的接口,由数据库厂商根据自身数据库的特点提供实现类,由开发者调用。开发者根据接口调用方法,可以屏蔽不同数据库厂商的差异。这样,无论连接什么数据库都是一套API。

    jdbc 操作步骤:                          流操作步骤:
    ① 加载驱动,建立连接                        1、建立流
    ② 执行SQL语句                                2、操作流
    ③ 关闭连接                                      3、关闭

    SQL注入: 在执行sql语句时,由于sql语句的值是由用户输入的,所以是以变量接收的,如果以拼接字符串方式来执行SQL语句,一旦数据中有非法字符或者有关键字时,会导致语法错误,或者执行结果不正确的情况,这称为SQL注入。


    Statement和PreparedStatement的区别:

    Statement是PreparedStatement 的父接口。在执行SQL语句时,只能以拼接字符串方式,拼接值。会引起SQL注入。而且效率低。

    PreparedStatement,是预编译SQL语句执行对象,支持占位符方式,无论数据是什么值,都当字符串处理,不会引起SQL注入。而且效率高。

    java和数据库的连接语法:

     1     @Override
     2     public void add(ManBean bean) {
     3         
     4         //连接对象
     5         Connection con=null;
     6         //SQL语句执行对象
     7         PreparedStatement ps=null;
     8         // 加载驱动
     9         try {
    10             Class.forName("org.gjt.mm.mysql.Driver");
    11             //建立连接,localhost为主机IP地址(本机),3306为mysql的端口号,
    12             //testdb为数据库的库名,characterEncoding=utf-8为字节编码集
    13             //root为mysql的登录名,123456为mysql的登录密码
    14             con=DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb?characterEncoding=utf-8",
    15                     "root","123456");
    16             System.out.println(con);
    17             
    18             //执行SQL语句,?为占位符
    19             ps=con.prepareStatement("insert into t_man(manName,birthday,money) values(?,?,?)");
    20             //填充占位符
    21             ps.setString(1, bean.getName());
    22             ps.setDate(2, bean.getBirthday());
    23             ps.setInt(3, bean.getMoney());
    24             //更新数据库
    25             ps.executeUpdate();
    26         } catch (Exception e) {
    27             e.printStackTrace();
    28         }
    29         finally{//关闭连接
    30             try {
    31                 ps.close();
    32                 con.close();
    33             } catch (Exception e) {
    34                 // TODO Auto-generated catch block
    35                 e.printStackTrace();
    36             }
    37         }
    38     }
  • 相关阅读:
    route add提示: "SIOCADDRT: No such process
    linux下route命令--说的比较清楚!
    linux route命令的使用详解
    Linux命令学习手册-route命令
    workqueue --最清晰的讲解
    udhcpc命令
    Mutex, semaphore, spinlock的深度解析
    dev_alloc_skb(len+16) skb_reserve(skb,2) skb_put(skb,len)
    skb_reserve(skb,2)中的2的意义
    option和 usb-serial驱动基本区别
  • 原文地址:https://www.cnblogs.com/jichuang/p/6663966.html
Copyright © 2011-2022 走看看