查询表中数据
private static void f4() throws Exception {
//1.注册驱动-反射去加载jar包中com.mysql.jdbc.Driver这个类中的DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3307/sumer-camp2023?characterEncoding=utf8", "root", "123456");
System.out.println(con);
//3.定义sql
String sql="select * from t_dept where did in (16,18)";
//4.需要创建statement
Statement statement=con.createStatement();
//5.statement执行sql,返回结果集
ResultSet rs=statement.executeQuery(sql);
//6.解析rs
while (rs.next()){ //读取结果集的光标向下移动一行,光标默认在哪一行,列明所在哪一行
int did=rs.getInt("did");
String dname=rs.getString("dname");
String dlocation=rs.getString("dlocation");
String leader=rs.getString("leader");
System.out.println(did+"--"+dname+"--"+dlocation+"--"+leader);
}
//7.关闭资源
statement.close();
con.close();
}
修改表中数据
private static void f3() throws Exception {
//1.注册驱动-反射去加载jar包中com.mysql.jdbc.Driver这个类中的DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3307/sumer-camp2023?characterEncoding=utf8", "root", "123456");
System.out.println(con);
//3.定义sql
String sql="update t_dept set leader='王总' where did=18";
//4.需要创建statement
Statement statement=con.createStatement();
//5.statement执行sql,返回结果集
int i=statement.executeUpdate(sql);
System.out.println("向数据库t_dept表中修改了"+i+"行数据!");
//6.关闭资源
statement.close();
con.close();
}
删除表中数据
private static void f2() throws Exception {
//1.注册驱动-反射去加载jar包中com.mysql.jdbc.Driver这个类中的DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3307/sumer-camp2023?characterEncoding=utf8", "root", "123456");
System.out.println(con);
//3.定义sql
String sql="delete from t_dept where did=18";
//4.需要创建statement
Statement statement=con.createStatement();
//5.statement执行sql,返回结果集
int i=statement.executeUpdate(sql);
System.out.println("向数据库t_dept表中删除了"+i+"行数据!");
//6.关闭资源
statement.close();
con.close();
}
向表中插入数据
private static void f1() throws Exception{
//1.注册驱动-反射去加载jar包中com.mysql.jdbc.Driver这个类中的DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3307/sumer-camp2023?characterEncoding=utf8", "root", "123456");
System.out.println(con);
//3.定义sql
String sql="insert into t_dept values (null,'乌克兰分部','基辅','程总')";
//4.需要创建statement
Statement statement=con.createStatement();
//5.statement执行sql,返回结果集
int i=statement.executeUpdate(sql);
System.out.println("向数据库t_dept表中插入了"+i+"行数据!");
//6.关闭资源
statement.close();
con.close();
}
}
查询多行多列
public static<T> List<T> list(String sql,Class<T> c) {
//创建一个集合,存放所有对象
List<T> tList = new ArrayList<>();
try{
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3307/sumer-camp2023?characterEncoding=utf8", "root", "123456");
System.out.println(con);
//3.定义sql
//4.需要创建statement
Statement statement=con.createStatement();
//5.statement执行sql,返回结果集
ResultSet rs=statement.executeQuery(sql);
//结果集rs得到结果集元数据
ResultSetMetaData md=rs.getMetaData();
//获取结果集的总列数
int columnCount=md.getColumnCount();
//6.解析rs
while (rs.next()){ //读取结果集的光标向下移动一行,光标默认在哪一行,列明所在哪一行
//根据每一行数据,封装成一个实体对象
T t=c.newInstance();
//1.取出某一行的每一列数据,封装到对象t的属性中
for(int i=1;i<=columnCount;i++) {
//通过列的序号,获取每一列的值
Object value = rs.getObject(i);
if(value!=null) {
//通过列的序号,获取每一列的列名
String columnName = md.getColumnName(i);
//因为列名和实体类t中的属性名一致,为每一个属性构造一个反射中的set方法
Field f = c.getDeclaredField(columnName);
//赋予私有属性的赋值权限
f.setAccessible(true);
//使用反射,把value给到对象t的属性中
f.set(t, value);
}
}
//把对象存入集合中
tList.add(t);
}
//7.关闭资源
statement.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
return tList;
}