博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java连接mysql(一)
阅读量:5227 次
发布时间:2019-06-14

本文共 2953 字,大约阅读时间需要 9 分钟。

 
1 import java.sql.*; 2  3 public class MysqlTest 4 { 5     public static void main(String[] args) throws SQLException,ClassNotFoundException{ 6         // TODO Auto-generated method stub 7           8         String url = "jdbc:mysql://localhost/xh"; 9         String username = "xiaohengdada";10         String password = "123456";11         //DriverManager.registerDriver(new com.mysql.jdbc.Driver());12      13         Class.forName("org.gjt.mm.mysql.Driver");14      15         Connection  connection = DriverManager.getConnection(url,username,password);16          17         Statement stat = connection.createStatement();18          19         20         // 执行查找操作21         ResultSet rsResultSet = stat.executeQuery("select * from students");22          23         while (rsResultSet.next()) {24             System.out.println("id = "+ rsResultSet.getObject("id"));25             System.out.println("name = "+ rsResultSet.getObject("name"));26             System.out.println("sex = "+ rsResultSet.getObject("sex"));27             System.out.println("age = "+ rsResultSet.getObject("age")); 28         }29             30          // 执行更新操作         31         String  sql = "update students set name = 'xiaoheng' where name = 'Ender'";32         System.out.println(sql);33        int  statentnum = stat.executeUpdate(sql);34        System.out.println(statentnum);35         if (statentnum>0) {36             System.out.println("update ok");37         }38              39          // 执行删除操40         sql = "delete from students where name = 'Peter'";41         System.out.println(sql);42         statentnum = stat.executeUpdate(sql);43         System.out.println(statentnum);//为什么这里输出的结果为044         if (statentnum>0) {45             System.out.println("delete ok");46         }47                 48         //执行插入操作49         sql="insert into students values(8,'nimeide','fema','255')";50         System.out.println(sql);51         statentnum = stat.executeUpdate(sql);52         System.out.println(statentnum);//为什么这里输出的结果为053         if (statentnum>0) {54             System.out.println("insert ok");55         }56                 57          // 资源的释放         58         rsResultSet.close();59         stat.close();60         connection.close();61     }62 }
 

 

 

上面相当于普通的交互过程,每处理一条数据,就需要访问一次数据库。

 

故可采用批处理和事务来进行处理。

批处理:累积到一定数量,再一次性提交到数据库,减少了与数据库的交互操作,所以效率会提高。

事务:事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功,默认是关闭事务的。

 

 

SQL 注入的防范

SQL 注入是用户利用某些系统没有对输入数据进行充分的检查,从而进行恶意破坏的行为。

1、statement存在sql注入攻击问题,例如登陆用户名采用' or 1=1 or username=‘
2、对于防范 SQL 注入,可以采用PreparedStatement取代Statement。

 

 

PreparedStatement

PreperedStatement是Statement的孩子,它的实例对象可以通过调用Connection.preparedStatement()方法获得,相对于Statement对象而言的优势:

(1) 防止SQL注入:PreperedStatement可以避免SQL注入的问题。
(2) 预编译SQL语句:Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement 可对SQL进行预编译,从而提高数据库的执行效率。
(3) 使用占位符简化语句:并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。 (例如多次循环插入数据)

转载于:https://www.cnblogs.com/xh0102/p/5689842.html

你可能感兴趣的文章
编程面试的10大算法概念汇总
查看>>
Vue
查看>>
表变量与临时表的优缺点(转)
查看>>
shell脚本图书
查看>>
UNIX环境高级编程——线程限制
查看>>
UNIX网络编程——原始套接字SOCK_RAW
查看>>
TCP发送源码学习(1)--tcp_sendmsg
查看>>
使用两个不同类型的数据进行加法计算时,使用异常处理语句捕获由于数据类型错误而出现的异常,发生生成错误。是否继续并运行上次的成功生成?...
查看>>
python-三级菜单和购物车程序
查看>>
web开发灵感推荐--34个有吸引力的电影网站设计灵感
查看>>
sql操作
查看>>
条件断点 符号断点
查看>>
第二十三模板 18.3.5 位集合
查看>>
LEFT JOIN条件写在where里是不会多查出数据来的
查看>>
手把手 学习Git
查看>>
VMware12 + Ubuntu16.04 虚拟磁盘扩容
查看>>
pwershell switch 语句
查看>>
学习Spring Boot:(五)使用 devtools热部署
查看>>
三人行有我师?取长补短?影响力?
查看>>
设计模式——设计模式概述
查看>>