标签:local tac 字符 etc 占位符 ide 执行sql ace generate
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 }
标签:local tac 字符 etc 占位符 ide 执行sql ace generate
原文地址:http://www.cnblogs.com/jichuang/p/6663966.html