1.简单了解JDBC
JDBC:(java database Connection) JAVA数据库连接
java:是面向对象的语言
SQL:结构化查询语言
为什么要用JDBC?
因为这这两种语言无法直接沟通,所以要出来一个翻译MySql:每一个数据库公司提供的方法名可能不一致。导致java必须记住没一个数据库的方法名。
java语言出来规范,让这些数据库公司实现这个规范。
2.JDBC链接的步骤:
1.加jar包到工程并且添加
2.加载驱动
3.获取链接对象
4.获取执行sql语句的对象
5.执行sql语句
6.关闭语句
注意:1.添加,删除,修改操作要用 executeUpdate()方法
2.查询操作用 executeQuery()方法
3.若控制台出现乱码,要在链接路径中加时区
1.添加操作
package Text1;
import java.sql.*;
import java.util.Scanner;
/**
* @ClassName qwe
* @author:zkm
* 添加数据操作
* @Date: 2021-10-16 17:12
*/
public class Text1 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//五步走
// 1.加载驱动
/*
* 驱动:声卡驱动,网卡驱动
* Class.forName(); //java反射里的一句代码。表示加载 字节码文件
* Class.forName("com.mysql.jdbc.Driver"); //加载mysql
* Class.forName("com.mysql.cj.jdbc.Dricer"); //加载mysql 8
* Class.forName("com.microsoft.sqlserver.jdbc.SQLserverDriver");//加载SQLserver
* Class.forName("sun.jdbc.odbc.JdbcOrdbcDriver"); //odbc
* Class.forName("oracle.jdbc.driver.OracleDriver") //Oracle
* */
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.创建连接
// DriverManager:驱动的管理者,通过它创建连接
String url="jdbc:mysql://localhost:3306/book?serverTimezone=Asia/Shanghai";
Connection conn= DriverManager.getConnection(url,"root","123456");
// 3.sql预编译/加载
//方法一:使用Statement 用于执行静态SQL语句并返回其生成的结果的对象
Statement statement=conn.createStatement();
String sql="insert into bookcate values (29,'英语')";
//添加
// i 返回sql语句执行后影响的行数
int i=statement.executeUpdate(sql);
System.out.println(i);
// 5.关闭连接
statement.close();
conn.close();
}
}
2.删除操作
package Text1;
import com.mysql.jdbc.Driver;
import java.sql.*;
/**
* @ClassName qwe
* @author:zkm
* 删除数据操作
* @Date: 2021-10-16 17:12
*/
public class Text2 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//第一步:加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//第二步:连接mysql
String url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8&&useSSL=false";
Connection conn= DriverManager.getConnection(url,"root","123456");
//第三步 sql加载
String sql="delete from bookcate where CateId=12";
PreparedStatement ps=conn.prepareStatement(sql);
//第四步
int i=ps.executeUpdate();
System.out.println(i);
//第五步 关闭连接
ps.close();
conn.close();
}
}
3.修改操作
package Text1;
import java.sql.*;
/**
* @ClassName Text5
* @author:zkm
*
* 修改操作
*
* @Date: 2021-10-19 10:36
*/
public class Text5 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8&&useSSL=false";
Connection conn=DriverManager.getConnection(url,"root","123456");
String sql="update bookcate set CateName='高数' where Cateid=7 ";
PreparedStatement ps=conn.prepareStatement(sql);
int i=ps.executeUpdate();
System.out.println(i);
ps.close();
conn.close();
}
}
4.查询操作
1.单行查询
package Text1;
import java.sql.*;
/**
* @ClassName qwe
* @author:zkm
*
* 查询数据操作
* 获取单行数据
*
* @Date: 2021-10-16 17:12
*/
public class Text3 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//第一步 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//第二步 连接数据库
String url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8&&useSSL=false";
Connection conn= DriverManager.getConnection(url,"root","123456");
//第三步
String sql="select * from bookcate where Cateid=?";
PreparedStatement ps=conn.prepareStatement(sql);
//第四步
//给?号设值
ps.setObject(1,2);
//执行sql
//ResultSet查询语句返回的类型是 结果集类型
ResultSet set=ps.executeQuery();
//set.next()判断是否有下一行数据
if(set.next()){
//获取数据方法一:根据数据库中数据的类型 根据第几列列数
/*
int id=set.getInt(1);
String name=set.getString(2);
System.out.println(id+" "+name);
*/
//获取数据方法二:根据数据库中列的名字来获取
/*
int id=set.getInt("Cateid");
String name=set.getString("CateName");
System.out.println(id+" "+name);
*/
//获取方法三:使用对象类型获取
Object id=set.getInt(1);
Object name=set.getString(2);
System.out.println(id+" "+name);
}
//第五步
ps.close();
conn.close();
}
}
2.多行查询
用List集合方法装。
package Text1;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName Text4
* @author:zkm
*
* 查询操作
* 获取全部数据
*
* @Date: 2021-10-19 10:12
*/
public class Text4 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//连接数据库
String url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8&&useSSL=false";
Connection conn= DriverManager.getConnection(url,"root","123456");
// 写sql语句
String sql="select * from bookcate";
PreparedStatement ps=conn.prepareStatement(sql);
//执行语句
//ResultSet 查询语句返回的类型是 结果集类型
ResultSet set=ps.executeQuery();
//getMetaDate() 此方法用来获取一个ResultSetMetaData对象 中有
ResultSetMetaData data=set.getMetaData();
//getColumnCount() 方法是ResultSetMetaData对象的方法 可以获取总共列数
int count=data.getColumnCount();
//set.next() 判断是否有下一行数据
//定义一个泛型list 的 list,创建一个大的List用来储存每一行数据
List<List> Biglist=new ArrayList<>();
while(set.next()){
List<Object> list=new ArrayList<>();
for(int i=1;i<=count;i++){
Object o=set.getObject(i);
list.add(o);
}
Biglist.add(list);
}
System.out.println(Biglist);
//关闭连接
ps.close();
conn.close();
}
}