java-数据库操作(JDBC)
前言:JDBC用到的API和常用方法
-
DriverMannager类
加载驱动并创建与数据库的连接,通常使用Class类的静态方法
forName()
来实现加载驱动,使用getConnection(String url,String user,String pwd)
方法实现连接,返回如下Connection对象
-
Connection接口
使用
createStatement()
返回一个用于向数据库发送语句的Statement对象,prepareStatement(String sql)
返回一个用于向数据库发送参数化的SQL语句的PreparedStatement对象
-
Statement接口
用于执行静态SQL语句,并返回一个结果对象
boolean execute(String sql)//用于执行各种SQL语句,返回布尔值,true代表有查询结果,可用getResultSet()获得查询结果 int executeUpdate(String sql)//用于执行insert、update、delete语句,返回数据库中受影响的记录条数 ResultSet executeQuery(String sql)//执行select语句,返回ResultSet对象
-
PreparedStatement接口
是Statement的子接口,扩展了带有参数SQL语句的执行操作,使用占位符"?"代替参数,使用setXXX()方法赋值
int executeUpdate()//执行SQL语句,限制语句为无返回内容的sql或DML语句 ResultSet executeQuery()//执行SQL查询 返回ResultSet对象 void setInt(int index,int x)//将指定的对应表头的参数设置为x void setFloat(int index,float x) void setString(int index,String x) void setDate(int index, Date x)//注意:Date类型必须为java.sql.Date,非java.util.Date
-
ResultSet接口
用于保存查询后的结果集,封装在一个逻辑表格中,接口内部有指向表格数据行的游标(指针),调用
next()
方法作为循环条件迭代结果集String getString(int columnindex)//根据索引获取指定字段的String的值 String getString(String columnname)//根据字段名称获取指定字段的String的值 int getInt(int columnindex)//根据索引获取指定字段的int的值 int getInt(String columnname)//根据字段名称获取指定字段的int的值 Date getDate(int columnindex)//根据索引获取字段的Date值 Date getDate(String columnname)//根据字段名称获取字段的Date值 boolean next()//游标下移一行 boolean absolute(int row)//游标移动到指定行
步骤概述:
1.加载数据库驱动
数据库驱动zip包下载:https://dev.mysql.com/downloads/connector/j/
选择Platform Independent,完成后在项目结构中导入文件夹里的Jar包
加载驱动
Class.forName("com.mysql.jdbc.Driver");//Mysql驱动 //IDEA亲测提示上面语句已经弃用,可改为com.mysql.cj.jdbc.Driver"" Class.forName("oracle.jdbc.driver.OracleDriver");//Oracle驱动
2.通过DriverManager获取数据库连接
Connect conn=DriverManager.getConnection(String url,String user,String pwd);
url格式:jdbc:mysql://localhost:3306/database-name
3.通过Connection对象获取Statement对象
Statement stmt=conn.creatStatement();
或stmt=conn.prepareStatement(String sql);
4.使用Statement执行SQL语句
ResultSet rs=stmt.executeQuery(sql);
5.操作得到的结果集
rs.getXXX();
6.关闭连接,释放资源
在try...catch..后的finally{}中统一关闭资源
实例
public class sql { public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { //1.加载数据库驱动 Class.forName("com.mysql.cj.jdbc.Driver"); String url = "jdbc:mysql://114.xx.xxx.62:3306/company"; String user = "root"; String pwd = "xxxxxx"; //2.通过DriverManager获取数据库连接 conn = DriverManager.getConnection(url, user, pwd); //3.通过Connection获取statement对象 stmt = conn.createStatement(); //4.执行SQL语句 rs = stmt.executeQuery("select * from demo1"); //5.操作结果集 while (rs.next()) { String name = rs.getString("企业名称"); String lat = rs.getString("经纬度"); String flag1 = rs.getString("flag1"); System.out.println(name+" | "+lat+" | "+flag1); } } } catch (ClassNotFoundException e) { e.printStackTrace(); }finally { //6.关闭连接,释放资源 if(rs!=null){rs.close();} if(stmt!=null){stmt.close();} if(conn!=null){conn.close();} } } } }
运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!