JDBC连接mysql数据库及PrepareStatement的作⽤及原理java连接mysql数据库,⾸先需要引⼊mysql-connection-java.jar包,前⾯的博客中给⼤家分享了mysql-connection-java-5.1.28.jar 包,有需要的⾃⾏下载。好了,上代码
//准备四⼤参数
String driverClassName="sql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/数据库名"+"?useServerPrepStmts=true&cachePrepStmts=true";//后⾯的参数作⽤是打开mysq预处理功能;
String username="root";
String password="123456";
//加载驱动类
Class.forName(driverClassName);
//得到con连接对象
Connection con=DriverManager(url,username,password);
//得到PrepareStatement对象
//通过con对象得到PrepareStatement对象
String sql="select * from user where username=? and password=?";
PreparedStatement pstmt=con.prepareStatement(sql);
//给sql中的参数赋值
pstmt.setString(1, myUserName);
pstmt.setString(2, myPassword);
ResultSet uteQuery();//调⽤查询⽅法
()){
System.out.println("登录成功");
}
mysql下载jar包else{
System.out.println("⽤户名或密码错误");
}
//关闭资源(倒关)
rs.close();
pstmt.close();
con.close();
这⾥的话使⽤的是PrepareStatement对象进⾏执⾏sql脚本。
使⽤PrepareStatement对象有三⼤优点:
1、防⽌sql攻击
2、提⾼代码可读性、可维护⾏
3、提⾼sql执⾏效率
但是,使⽤PrepareStatement有⼀个前提,就是⼀定要开启数据库的预处理功能,⽽mysql数据库在4.0之后预处理功能默认是关闭的,所以我们在准备url这个参数时,要在后⾯加如上所⽰的参数。就是说如果你使⽤Statement执⾏sql脚本,就不需要在url后⾯加上该参数。
接下来,聊⼀聊PrepareStatement提⾼sql执⾏效率的原理。
在sql语句执⾏时,会先校验sql语句有没有语法错误(通常这个过程所花费的时间⽐执⾏sql脚本还久),再执⾏sql语句。
⽽PrepareStatement执⾏sql,因为它是与sql模板绑定在⼀起,所以只会在第⼀次执⾏时进⾏sql校验,后⾯执⾏时不会再进⾏校验(因为你前⾯已经校验过了),直接执⾏sql脚本。