Java培训课程之数据库的操作或访问

操作或访问数据库

数据库连接被用于向数据库服务器发送命令和 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类型的对应关系

java培训

释放资源

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();

         }

}

 

 


上一篇:
下一篇: