二十六、数据库操作基础
- 数据库系统概论在此先不过多叙述了,主要是学习用JAVA操作数据库。
1. JDBC概述
JDBC是一种可用于执行SQL语句的Java API(应用程序设计接口),是连接数据库和JAVA应用程序的纽带。
-
为什么要使用JDBC呢?JAVA可以利用JDBC驱动程序访问数据库。通过JDBC技术可以完成与数据库建立连接、向数据库发送SQL语句、处理数据库返回的结果。
JDBC的作用 -
使用JDBC操作数据库分为五个步骤:加载JDBC驱动程序、连接数据库、发送SQL语言、处理结果集和关闭数据库。
使用JDBC操作数据库的步骤
2. 连接数据库
-
要访问数据库,首先要加载数据库的驱动程序(只需要在第一次访问数据库时加载一次),然后每次访问数据库时创建一个Connection对象,接着执行操作数据库的SQL语句,最后在完成数据库操作后销毁前面创建的Connection对象,释放与数据库的连接。
连接数据库
下面编写一个程序连接数据库:
- 连接数据库:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class lianjiesjk
{
public static void main(String[] args)
{
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://127.0.0.1:3306/database";
String username="root";
String password="123456";
Connection con= DriverManager.getConnection(url,username,password);
System.out.println(con);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
运行结果:
- 如图所示,数据库连接成功。
3. JAVA对数据库的基本操作(增、删、查、改)
-
首先在mysql中建立一个数据表:
首先对数据库进行查询操作:
import java.sql.*;
public class chaxun
{
public static void main(String[] args )
{
Connection con1=null;//链接接口
Statement stmt1=null;//发送sql接口
ResultSet rs1=null;//结果集接口
try {
Class.forName("com.mysql.cj.jdbc.Driver");
con1= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/database","root","123456");
stmt1=con1.createStatement();
rs1=stmt1.executeQuery("select * from student1");
while (rs1.next())//下一行数据
{
int ID=rs1.getInt("ID");//获取ID这一列的值
String name=rs1.getString(2);//获取第二列的值
String sex=rs1.getString("sex");
String birthday=rs1.getString(4);
System.out.println("编号:"+ID+" 姓名:"+name+" 性别:"+sex+" 生日:"+birthday);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (rs1!=null)
{
try {
rs1.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt1!=null)
{
try {
stmt1.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con1!=null)
{
try {
con1.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
运行结果:
查询结果
查询结果
- 由运行结果可以看到,查询得到的数据跟创建表的数据一样,实现了对数据库的查询操作。
对数据库实行增、删、改操作
import java.sql.*;
public class chaxun
{
public static void main(String[] args )
{
Connection con1=null;//链接接口
Statement stmt1=null;//发送sql接口
try {
Class.forName("com.mysql.cj.jdbc.Driver");
con1= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/database","root","123456");
stmt1=con1.createStatement();
//插入数据
String sq11="insert into student1(ID,name,sex,birthday) values('5','tom','男','20001122')";
int result1=stmt1.executeUpdate(sq11);
System.out.println("插入了"+result1+"行数据");
//修改数据
String sql2="update student1 set birthday = '19920404' where ID = 2";
int result2=stmt1.executeUpdate(sql2);
System.out.println("修改了"+result2+"行数据");
//删除数据
String sql3="delete from student1 where ID=1";
int result3=stmt1.executeUpdate(sql3);
System.out.println("删除了"+result3+"行数据");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
运行结果:
操作情况
操作情况
操作后的数据表
- 由运行结果可以看到,程序运行之后,删除了第一行的数据,修改了小华的生日数据,并且添加了一行新的数据,至于为什么tom得性别是问号,那是由于在建立数据表的时候,选择的编码模式与IDEA的编码模式不一样导致的乱码问题。