JDBC连接数据库步骤一.加载驱动
导入jar包
Class.forName("driver")
作用:不只是创建一个类的Class对象,它加载了整相关程序的类。
JDBC连接数据库步骤二.获取连接对象
Connectioncon=DriverManager.getConnection(url,user,pwd)
url:告诉数据库的位置
JDBC连接数据库步骤三.创建语句对象,执行SQL
增删改
返回影响所有行
非查询
- Statement:
- Statementst=con.CreateStatement()
- inti=st.executeUpdate(sql)
下标从一开始
- inti=st.executeUpdate(sql);
- PreparedStatement:
- PreparedStatementps=con.PreparedStatement("sql语句")
- ps.setXXX(n,值)
对第n个?进行赋值
区别
用st的好处
在动态组装SQL时,指动态产生要执行SQL语句
用pst的好处
更好维护
避免SQL注入
效率更高
扩展
用JDBC的批处理(BATCH)可以提高效率
用ResultSetMetadata可以获取列的信息(个数,名称)
查询
- resultsetrs=pst.executePuery()
- while(rs.net())
- Stringstr=rs.getString(列的位置,列的名称)
JDBC连接数据库步骤四.关闭
顺序
- ifrs!=nullrs.close();
- pst.close();
- con.close();
具体实例:
- privatefinalStringURL="jdbc:mysql://localhost:3306/db";
- privatefinalStringFINDALL="select*fromdept";
- privateConnectioncon;
- privatePreparedStatementps;
- privateResultSetrs;
- //查询
- publicListfindAll(){
- Listlist=newArrayList();
- try{
- Class.forName("com.mysql.jdbc.Driver");
- con=DriverManager.getConnection(URL,"root","123");
- ps=con.prepareStatement(FINDALL);
- rs=ps.executeQuery();
- while(rs.next()){
- DeptDTOdto=newDeptDTO();
- dto.setDeptId(rs.getInt("deptId"));
- dto.setName(rs.getString("depName"));
- dto.setPhone(rs.getString("phone"));
- System.out.println(dto.getDeptId()+""+dto.getName()+""+dto.getPhone());
- list.add(dto);
- }
- con.close();
- }catch(ClassNotFoundExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }catch(SQLExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- returnlist;
- }
- //添加,添加中关闭连接的方法相比查询中的关闭方法更好一些
- publicvoidadd(DeptDTOdto){
- try{
- Class.forName("com.jdbc.mysql.Driver");
- con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db","root","123");
- ps=con.prepareStatement("insertintodept(deptId,depName,phone)values(?,?,?)");
- ps.setInt(1,dto.getDeptId());
- ps.setString(2,dto.getName());
- ps.setString(3,dto.getPhone());
- ps.execute();
- }catch(ClassNotFoundExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }catch(SQLExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- finally{
- try{
- if(con!=null&&!con.isClosed()){
- con.close();
- }
- }catch(SQLExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }
- le.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
- atoracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
- atjava.sql.DriverManager.getConnection(UnknownSource)
- atjava.sql.DriverManager.getConnection(UnknownSource)
- attool.DbConnect.getConnect(DbConnect.java:45)
- attool.DbConnect.main(DbConnect.java:54)
【编辑推荐】