jdbc(1)
1. jdbc的概述
JDBC(Java DataBase Connectivity) 称为Java数据库连接,它是一种用于数据库访问的应用程序API接口,由一组用Java语言编写的类和接口组成,有了JDBC就可以用统一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异。 有了JDBC,就不必为访问Mysql数据库专门写一个程序,为访问Oracle又专门写一个程序等等。
2. java连接数据库
2.1 把mysql的驱动jar放入工程并构建
数据的jar包: 就是各个数据库厂商--编写好的连接数据库的代码的压缩文件。 如果我们连接不同的数据库则需要使用不同数据库的jar包。
首先需要我们引入jar包、然后添加为库
构建好的效果
2.2 编写连接数据库的代码
public static void main(String[] args) throws Exception{
//1.加载驱动.com.mysql.cj.jdbc.Driver表示驱动类名 该类是mysql数据库厂商写好的类名。现在可以省略改行,但是后期web工程就无法省略
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 获取连接数据库的对象。java.sql.Connection接口
/*
String url,连接数据库的路径 jdbc:mysql://localhost:3306/qy174
jdbc:表示连接数据库的协议。
mysql:表示连接数据库的类型
localhost:表示数据库服务器所在的ip.
3306:数据库的端口号
qy174:表示数据库名
String user,连接数据库时的账号
String password 连接数据库的密码
*/
String url="jdbc:mysql://localhost:3306/qy174";
String user="root";
String password="root";
Connection conn= DriverManager.getConnection(url,user,password);
//3. 获取执行sql语句的对象 java.sql.Statement
Statement st=conn.createStatement();
//4. 执行sql语句: 增删改 executeUpdate()
String sql="insert into emp values(null,'小木','男')";
int row=st.executeUpdate(sql); //表示对改变中记录的影响条数
System.out.println("影响了数据库记录:"+row);
}
- 加载驱动. Class.forName("com.mysql.cj.jdbc.Driver");
- 获取连接对象: Connection conn=DriverManager.getConnection(url,user,password);
- 获取执行sql语句的对象: Statement st=conn.createStatement();
- 执行sql语句。增删改. int row=st.executeUpdate(sql);
2.3 完成crud操作
删除操作
@Test
public void testDelete()throws Exception{
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接对象
String url="jdbc:mysql://localhost:3306/qy174";
String user="root";
String password="root";
Connection conn=DriverManager.getConnection(url,user,password);
//3.获取执行sql语句的对象
Statement st=conn.createStatement();
//4.执行sql语句
String sql="delete from emp where id=4";
int row=st.executeUpdate(sql);
System.out.println("删除影响的条数:"+row);
}
修改操作
@Test
public void testUpdate() throws Exception{
//1. 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 获取连接对象
String url="jdbc:mysql://localhost:3306/qy174";
String user="root";
String password="root";
Connection conn=DriverManager.getConnection(url,user,password);
//3.获取执行sql语句的对象
Statement st=conn.createStatement();
//4.执行sql语句
String sql="update emp set name='刘德华',sex='女' where id=1";
int row=st.executeUpdate(sql);
System.out.println("影响的行数:"+row);
}
查询操作
@Test
public void testSelectAll() throws Exception{
//1. 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 获取连接对象
String url="jdbc:mysql://localhost:3306/qy174";
String user="root";
String password="root";
Connection conn=DriverManager.getConnection(url,user,password);
//3. 获取sql的执行对象
Statement st=conn.createStatement();
//4. 执行sql语句
String sql="select * from emp";
ResultSet rs=st.executeQuery(sql);
//5. 把查询的结果遍历显示出来
while (rs.next()){ //rs.next():判断下一条是否有记录,如果有则指针执行下一条。
int id = rs.getInt("id"); //得到当前记录的id列值
String name = rs.getString("name"); //得到当前记录的name值
String sex = rs.getString("sex");
System.out.println("编号:"+id+";姓名:"+name+";性别:"+sex);
}
}
根据条件查询
//查查操作: 1. 条件查询. select * from 表名 where 条件;
@Test
public void testSelectByCondition()throws Exception{
//1. 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 获取连接对象
String url="jdbc:mysql://localhost:3306/qy174";
String user="root";
String password="root";
Connection conn=DriverManager.getConnection(url,user,password);
//3. 获取sql的执行对象
Statement st=conn.createStatement();
//4. 执行sql语句
String sql="select * from tbl_teacher where name like '%豪%' and age>25";
ResultSet rs=st.executeQuery(sql);
//5. 把查询的结果遍历显示出来
while (rs.next()){ //rs.next():判断下一条是否有记录,如果有则指针执行下一条。
int id = rs.getInt("id"); //得到当前记录的id列值
String name = rs.getString("name"); //得到当前记录的name值
String sex = rs.getString("sex");
String phone = rs.getString("phone");
int age = rs.getInt("age");
System.out.println("编号:"+id+";姓名:"+name+";性别:"+sex+";手机号:"+phone+";年龄:"+age);
}
}
3. 容易出现的错误
第一个:
①:没有引入mysql的驱动jar包
②引入了jar但是没有构建到工程中
③:驱动名写错了
第二个
密码错误
第三种
第四种
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)