JDBC(一):Statement和PreparedStatement连接数据库
背景介绍:本文以Java连接Mysql,IDEA:eclipse为前提。
public class demo {
public static void main(String[] args) {
Connection conn = null;
// --1.加载数据库驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// --2.通过驱动管理器建立连接对象
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "root";
try {
conn = DriverManager.getConnection(url, user, password);
// --3.通过驱动管理器建立操作对象
Statement statement = conn.createStatement();
// --4.获取执行sql语句
String sql = "SELECT hiredate FROM emp WHERE ename = 'SMITH'";
// --5.遍历结果集(对于查询)或者得到执行反馈(对于增删改)
ResultSet rs = statement.executeQuery(sql);
boolean b = statement.execute(sql);
System.out.println(b);
while (rs.next()) {
System.out.println(rs.getString(1));
}
// --6.关闭连接通道
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
需要注意点:
一:第一步操作的提前准备工作步骤:
1.新建lib文件夹
在项目包文件夹下——>>左键选中,右键菜单项里面——>>选择Folder,在Folde name 里面填入lib。
2.数据库连接语言安装包的下载
maven仓库下载一个你用的数据库XXX连接你用的编程语言YYY的安装包,例如本人就下载mysql-connector-java-5.1.6-bin.jar安装包(其中5.1.6是版本号,任何版本号都可以,选择一个下载量多的即可)。
3.安装包的导入
将上一步下载好的安装包(一定不要解压)复制到lib文件夹下——>>右键安装包,选择Build Path——>>选择Add to build path。
4.驱动路径的选择
Class.forName(“com.mysql.jdbc.Driver”)中双引号的内容即是驱动路径。每种数据库对应的路径都是固定的,如要自己去查询,那么路径查找方法如下:
在项目中找到,Referenced Libraries文件夹——>>mysql-connector-java-5.1.6-bin.jar——>>XXX.mysql.jdbc——>>找到Driver.class——>>右键菜单项中选择copy QualifiedName
结果为com.mysql.jdbc.Driver.class,去掉尾部的.class即是双引号里面需要填写的结果。
二:第二步中参数的选择
1.url =“jdbc:mysql://localhost:3306/mydatabase”。
其中mysql是使用的数据库名称,如果你用的是Oracle,那么填写oracle;
//localhost:3306/表示的是本地ip地址且端口为3306(也可以用///代替);mydatabase表示的是你用的数据库的名称。
2.user=“root”中root表示mysql的用户登录账户名称。
3.password=“root”中root表示mysql的用户登录密码。
三:第五步中
1.execute() ,返回值 boolean,可用于增删改查。
执行此 PreparedStatement对象中的SQL语句,这可能是任何类型的SQL语句。
2.executeUpdate() 返回值:int,只能用于增删改。
执行在该SQL语句PreparedStatement对象,它必须是一个SQL数据操纵语言
(DML)语句,如INSERT , UPDATE或DELETE ; 或不返回任何内容的SQL语句,例如DDL语句。
3.executeQuery() 返回值:ResultSet,只能用于查询。
执行此 PreparedStatement对象中的SQL查询, 并返回查询 PreparedStatement的 ResultSet对象。
四:加载类的API全部都要是sql里面的。如
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
五:Statement无法防御注入式攻击
如在用户输入密码登录的时候随便输入一个密码然后,后面加上’or’1’='1那么随便一个账户和密码都能够查询出来;更有甚者还用注入式攻击方法获取sql的权限进行一些破坏,后果十分严重。
为了防范注入式攻击,PreparedStatement方法脱颖而出。
如果本文对你有用,麻烦点个赞!
需要mysql-connector-java-5.1.6-bin.jar安装包的可以点加我某鹅号:23D786B9(十六进制转化成十进制即可),送与有缘人!
下一章要总结防范注入式攻击PreparedStatement类的使用方法。