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.查询操作
单行查询
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(); } }