1.JDBC技术api是jdk提供的
2.连接不同的数据库,需要不同的连接驱动(需要自己下载然后加入到项目中去)
步骤:
(1)下载mysql的连接驱动
(2)放入项目的lib目录(可放可不放),复制文件粘贴进去即可
(3)在项目中引用mysql的连接驱动
在File中找到Project Structure选项打开(使用快捷键亦可)
找到Libraries,点击加号,选择Java
找到自己项目中的lib目录,将驱动添加进去。如果没有放入lib目录,则找到自己放置驱动文件的地方添加,点击OK即可
3.实际代码操作(根据自己的数据库进行操作)
//JDBC连接数据库(查询)
public class Mysql {
public static void main(String[] args) throws Exception {
//1、加载连接驱动(表示具备连接mysql的资格)
Class.forName("com.mysql.jdbc.Driver");
//2、连接mysql中的mychool数据库
//通过DriveManager驱动可以得到一个数据库的连接
//jdbc://musql://127.0.0.1:3306/myschool
//使用jdbc技术连接127.0.0.1主机上的mysql,端口号是3306,数据库的名字是myscool
Connection conn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/myschool","root","root");
//3、取得执行对象(从conn连接中创建一个执行对象)
Statement statement=conn.createStatement();
//4、执行SQL语句并获取返回结果集
ResultSet rs=statement.executeQuery("select * from student");
//5、处理结果:解析rs的结果 rs.next()将指针移动到下一条数据
while(rs.next()){
//打印rs中的结果
System.out.print(rs.getInt("StudentNo")+"\t");
System.out.print(rs.getString("studentName")+"\t");
System.out.println(rs.getString("address"));
}
rs.close();
statement.close();
conn.close();
}
}
//增删改使用executeUpdate
//JDBC连接数据库增删改的方法
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/myschool","root","root");
Statement statement=conn.createStatement();
Scanner input =new Scanner(System.in);
System.out.println("请输入要删除的学生学号:");
int num=input.nextInt();
//增删改返回的是受影响的行数
int count=statement.executeUpdate("delete from student where studentNo="+num);
if (count>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
statement.close();
conn.close();
}
}
由于增删改的过程中,使用+进行拼接的话,比较容易被sql注入,被植入病毒。所以拼接的形式不理想,容易出现bug。所以通常都使用占位符。当时当前执行对象不支持占位符,所以使用 PreparedStatement接口,代码如下:
```java
//JDBC连接数据库最常用增删改方法(改良版)
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/myschool","root","root");
//执行对象
Scanner input =new Scanner(System.in);
System.out.println("请输入要删除的学生学号:");
int num=input.nextInt();
PreparedStatement ps=conn.prepareStatement("delete from student where studentNo=?");
//检查sql语句是否存在占位符,如果存在需要给占位符赋值
ps.setInt(1,num);
int count=ps.executeUpdate();
if (count>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
ps.close();
conn.close();
}
为什么使用PreparedStatement接口及优点:
ResultSet常用方法:
Statement常用方法:
总结: