Java学习课程之数据库的操作或访问

1099 篇文章 1 订阅
1030 篇文章 9 订阅
这篇博客详细介绍了Java中如何操作或访问数据库,包括Statement接口用于执行静态SQL语句,PreparedStatement接口用于预编译并高效执行SQL,以及CallableStatement接口用于执行SQL存储过程。此外,还讲解了ResultSet对象的使用,它是执行数据库操作结果的载体,并阐述了释放数据库资源的重要性。最后提供了一个简单的示例代码来展示Statement的使用。
摘要由CSDN通过智能技术生成

操作或访问数据库
数据库连接被用于向数据库服务器发送命令和 SQL 语句,并接受数据库服务器返回的结果。

其实一个数据库连接就是一个Socket连接。

在 java.sql 包中有 3 个接口分别定义了对数据库的调用的不同方式:

Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。
PrepatedStatement:SQL 语句被预编译并存储在此对象中,然后可以使用此对象多次高效地执行该语句。
CallableStatement:用于执行 SQL 存储过程
1 Statement
通过调用 Connection 对象的 createStatement() 方法创建该对象

该对象用于执行静态的 SQL 语句,并且返回执行结果

Statement 接口中定义了下列方法用于执行 SQL 语句:

int excuteUpdate(String sql):执行更新操作INSERT、UPDATE、DELETE

ResultSet excuteQuery(String sql):执行查询操作SELECT

2 ResultSet
通过调用 Statement 对象的 excuteQuery() 方法创建该对象

ResultSet 对象以逻辑表格的形式封装了执行数据库操作的结果集,ResultSet 接口由数据库厂商实现

ResultSet 对象维护了一个指向当前数据行的游标,初始的时候,游标在第一行之前,可以通过 ResultSet 对象的 next() 方法移动到下一行

ResultSet 接口的常用方法:

boolean next()
getXxx(String columnLabel):columnLabel使用 SQL AS 子句指定的列标签。如果未指定 SQL AS 子句,则标签是列名称
getXxx(int index) :索引从1开始

java类型与SQL类型的对应关系
在这里插入图片描述
释放资源
Connection、Statement、ResultSet都是应用程序和数据库服务器的连接资源,使用后一定要关闭,可以在finally中关闭

未关闭后果:

     @Test

     public void testConnection4()throws Exception{

              Properties pro = new Properties();

              pro.load(ClassLoader.getSystemClassLoader().getResourceAsStream(“jdbc.properties”));

              String url = pro.getProperty(“url”);



              //my.ini中max_connections=10

              for (int i = 0; i < 15; i++) {

                      Connection conn = DriverManager.getConnection(url,pro);

                      System.out.println(conn);

                      //没有关闭,资源一直没有释放

              }

     }

增、删、改、查示例代码
package com.atguigu.statement;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import org.junit.Test;

/*

  • 网络编程:tcp

  • 服务器端:

  • 1、ServerSocket server = new ServerSocket(3306);

  • 2、Socket socket = server.accept();

  • 3、InputStream input = socket.getInputStream();//接收sql,客户端传过来的

  • 4、在服务器执行sql

  • 5、把结果给客户端

  • 客户端:

  • 1、Socket socket = new Socket(服务器的IP地址,3306);

  • 2、传sql

  • 3、OutputStream out = socket.getOutputStream();

  • 4、out.write(sql);

  • 5、接收结果

  • 6、断开连接 out.close();socket.close();

*/

public class TestStatement {

     @Test

     public void testAdd()throws Exception{

              String sql = “INSERT INTO dept(dname,description) VALUES(‘财务部’,’负责发钱工作’)”;



              String url = “jdbc:mysql://localhost:3306/1221db”;

              String user = “root”;

              String password = “123456”;

              Connection conn = DriverManager.getConnection(url, user, password);



              Statement st = conn.createStatement();



              int len = st.executeUpdate(sql);//把insert,update,delete都用这个方法



              if(len>0){

                      System.out.println(“添加成功”);

              }else{

                      System.out.println(“添加失败”);

              }



              st.close();

              conn.close();

     }



     @Test

     public void testUpdate()throws Exception{

              String sql = “UPDATE dept SET description = ‘负责发工资、社保、公积金工作’ WHERE dname =’财务部'”;



              String url = “jdbc:mysql://localhost:3306/1221db”;

              String user = “root”;

              String password = “123456”;

              Connection conn = DriverManager.getConnection(url, user, password);



              Statement st = conn.createStatement();



              int len = st.executeUpdate(sql);//把insert,update,delete都用这个方法



              if(len>0){

                      System.out.println(“修改成功”);

              }else{

                      System.out.println(“修改失败”);

              }



              st.close();

              conn.close();



     }



     @Test

     public void testDelete()throws Exception{

              String sql = “DELETE FROM dept WHERE did =2”;



              String url = “jdbc:mysql://localhost:3306/1221db”;

              String user = “root”;

              String password = “123456”;

              Connection conn = DriverManager.getConnection(url, user, password);



              Statement st = conn.createStatement();



              int len = st.executeUpdate(sql);//把insert,update,delete都用这个方法



              if(len>0){

                      System.out.println(“删除成功”);

              }else{

                      System.out.println(“删除失败”);

              }



              st.close();

              conn.close();

     }



     @Test

     public void testSelect()throws Exception{

              String sql = “SELECT * FROM dept”;



              String url = “jdbc:mysql://localhost:3306/1221db”;

              String user = “root”;

              String password = “123456”;

              Connection conn = DriverManager.getConnection(url, user, password);



              Statement st = conn.createStatement();



              ResultSet rs = st.executeQuery(sql);//select语句用query方法

              while(rs.next()){//是否有下一行

                      //取这一行的单元格

                      int id = rs.getInt(1);

                      String name = rs.getString(2);

                      String desc = rs.getString(3);



                      System.out.println(id+”\t” + name + “\t” + desc);

              }



              rs.close();

              st.close();

              conn.close();



     }



     @Test

     public void testSelect2()throws Exception{

              String sql = “SELECT did,dname FROM dept”;



              String url = “jdbc:mysql://localhost:3306/1221db”;

              String user = “root”;

              String password = “123456”;

              Connection conn = DriverManager.getConnection(url, user, password);



              Statement st = conn.createStatement();



              ResultSet rs = st.executeQuery(sql);//select语句用query方法

              while(rs.next()){//是否有下一行

                      //取这一行的单元格

                      int id = rs.getInt(“did”);

                      String name = rs.getString(“dname”);

                      System.out.println(id+”\t” + name);

              }



              rs.close();

              st.close();

              conn.close();

     }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值