package com.bjsxt.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.bjsxt.pojo.Emp;
/**
* jdbc完成查询:
* Statement对象方式:
* 问题:
* 将数据库中的数据查询到java代码中,在java代码中怎么存储查询到数据。
* 解决:
* 数据库中使用二维表进行数据的存储
* java中存储数据的方式为:变量或者对象
* 根据二维表的结构在java代码中创建对应的类,一条数据为类的一个实例化对象。
* 实现:
* 创建一个和二维表结构相同的java实体类
* 使用:
* //1、声明jdbc参数
//2、声明jdbc变量
//3、加载驱动
//4、创建连接对象
//5、创建SQL命令
//6、创建SQL命令对象
//7、执行SQL命令
//8、处理结果
//使用while循环遍历查询的结果
//使用实例化对象存储每条遍历的结果
方式一:使用rs.get类型(角标) 获取每条数据;
主要使用在功能查询里,sql语句时动态改变的。
方式二:使用rs.get类型(字段名) 获取每条数据;
主要使用在指定表查询,SQL语句一般不会发生变更.
//将对象存储到集合中
注意:
1、jdbc的查询中,执行查询后返回ResultSet对象
使用rs.next()判断是否有下一条数据,如果有则指针指向该数据。
2、每条数据的角标从1开始,使用rs.get类型(角标)获取数据
ResultSet特点:
特点1:基于指针方式
特点2:实现了数据库数据类型和java数据类型的转换。
概念:
实体类:专门用来存储数据的类--->com.bjsxt.pojo(使用这个), com.bjsxt.vo,com.bjsxt.enity
*
*
*
* @author MyPC
*
*/
public class TestStatementSelect {
public static void main(String[] args) {
//1、声明jdbc参数
String driver="oracle.jdbc.OracleDriver";
String url="jdbc:oracle:thin:@localhost:1521:XE";
String username="scott";
String password="123";
//2、声明jdbc变量
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
ArrayList<Emp> list=null;
try {
//3、加载驱动
Class.forName(driver);
//4、创建连接对象
conn=DriverManager.getConnection(url, username, password);
//5、创建SQL命令
String sql="select * from emp";
//6、创建SQL命令对象
stmt=conn.createStatement();
//7、执行SQL命令
rs = stmt.executeQuery(sql);
list=new ArrayList<>();
//8、处理结果
while(rs.next()){
//创建emp实例化对象存储数据
Emp e=new Emp();
//使用角标获取
/*e.setEmpno(rs.getInt(1));
e.setEname(rs.getString(2));
e.setJob(rs.getString(3));
e.setMgr(rs.getInt(4));
e.setHiredate(rs.getDate(5));
e.setSal(rs.getDouble(6));
e.setComm(rs.getDouble(7));
e.setDeptno(rs.getInt(8));*/
//使用字段名获取
e.setEmpno(rs.getInt("empno"));
e.setEname(rs.getString("ename"));
e.setJob(rs.getString("job"));
e.setMgr(rs.getInt("mgr"));
e.setHiredate(rs.getDate("hiredate"));
e.setSal(rs.getDouble("sal"));
e.setComm(rs.getDouble("comm"));
e.setDeptno(rs.getInt("deptno"));
list.add(e);
}
//9、关闭资源
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(list);
}
}
import java.awt.List;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.bjsxt.entity.Clazz;
public class TestStatementSelect {
public static void main(String[] args) {
/**
* 1、创建jdbc参数
* 2、创建jdbc变量
* 3、加载驱动
* 4、创建连接
* 5、创建SQL执行对象
* 6、创建SQL命令
* 7、执行SQL命令
* 8、处理执行结果
* 9、关闭资源
*/
//1、创建jdbc参数
String driver ="oracle.jdbc.OracleDriver";
String url="jdbc:oracle:thin:@localhost:1521:XE";
String username="scott";
String password="123456";
//创建jdbc变量
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
Clazz c = new Clazz();
ArrayList list = null;
//3、加载驱动
try {
Class.forName(driver);
//4、创建连接
conn = DriverManager.getConnection(url, username, password);
//5、创建SQL执行对象
stmt = conn.createStatement();
//6、创建SQL命令
String sql="select * from clazz";
//7、执行SQL命令
rs = stmt.executeQuery(sql);
//8、处理结果
list = new ArrayList();
while(rs.next()){
c.setCno(rs.getInt("cno"));
c.setCname(rs.getString("cname"));
c.setSdesc(rs.getString("cdesc"));
list.add(c);
}
System.out.println(list);
//9、关闭资源
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}