第9章 通过应用程序连接数据库-SQL基础教程

本文介绍如何通过Java连接数据库,讲解数据库与应用程序的关系,驱动的作用及种类,如ODBC和JDBC。此外,详细展示了使用Java基础进行Hello,World程序的编写、编译和执行过程。接着,通过实例演示了Java连接PostgreSQL数据库,执行SQL语句,包括选择、更新数据等操作。" 109319633,9532918,手机数据预处理与机器学习入门,"['机器学习', '数据预处理', 'pandas库', 'sklearn库', '数据处理']

9-1 数据库世界和应用程序世界的连接

数据库和应用程序之间的关系

系统应用数据库组合而成

驱动——两个世界之间的桥梁

驱动就是一个用来连接应用和数据库的非常小的特殊程序(大概只有几百 KB)

驱动的种类

现在广泛使用的驱动标准主要有 **ODBC(Open DataBase Connectivity)**和 **JDBC(Java Data Base Connectivity)**两种

C:\PostgreSQL\jdbc\postgresql-9.4.1208.jar

9-2 Java基础知识

第一个程序Hello,World

//在画面上显示简短字符串的Java程序
public class Hello{
 public static void main(String[] args){
 System.out.print("Hello, World");
//SQL 语句中的字符串是使用单引号(')括起来的,而在 Java 中则需要使用双引号(")括起来
 }

C:\PostgreSQL\java\src\Hello.java

编译和程序执行

把源文件保存到文件夹之后,Java 源代码的编写就完成了,但此时程序并不能执行,还需要**编译(compile)**这个步骤

代码的编译是通过已经安装的 JDK 自带的“javac.exe”程序进行的,程序名末尾的“c”是 compile 的缩写。该程序存放在“C:\PostgreSQL\java\jdk\bin”文件夹下

javac.exe 需要通过命令提示符来执行
在这里插入图片描述

  1. cd(change directory)命令(移动到指定文件夹)
cd C:\PostgreSQL\java\src

命令执行成功之后并不会显示什么特别的信息。执行失败时会显示错误信息

  1. javac命令(编译)
C:\PostgreSQL\java\jdk\bin\javac Hello.java

命令执行成功之后并不会显示什么特别的信息。执行失败时会显示错误信息

编译成功之后,在存放源文件的文件夹下会生成一个名为“Hello.class”的新文件。这是一个可以执行的文件,称为“类文件

  1. java命令(执行)
C:\PostgreSQL\java\jdk\bin\java Hello

如果命令提示符中显示出了“Hello,World”,就表示执行成功了

使用 Java 语言进行编程时,必须经过如下 3 个步骤:
4. 编写源代码,保存为源文件
        ↓
5. 使用 javac 命令进行编译,生成类文件
        ↓
6. 使用 java 命令执行程序

常见错误

大小写错误
Java源代码中的保留字要区分大小写,这是它和数据库的不同点之一

使用全角空格
Java源代码中不能出现全角字符/全角空格(注释除外)

源文件的文件名和类名不一致
命令名和文件名错误

9-3 通过 Java连接 PostgreSQL

执行SQL语句的Java程序

import java.sql.*;	//声明了连接数据库执行 SQL 语句所需要的 Java 功能
public class DBConnect1 {
 public static void main(String[] args) throws Exception {
 /* 1) PostgreSQL的连接信息 */
 Connection con;	//Connection:连接,负责连接数据库
 Statement st;	//Statement:声明,负责存储和执行 SQL 语句
 ResultSet rs;	//ResultSet:结果集,负责保存 SQL 语句的执行结果
 String url = "jdbc:postgresql://localhost:5432/postgres";
 String user = "postgres";
 String password = "test";

 /* 2) 定义JDBC驱动 */
 Class.forName("org.postgresql.Driver"); 
 //连接时使用什么样的驱动。“org.postgresql.Driver”是PostgreSQL的JDBC驱动的类名
 
 /* 3) 连接PostgreSQL */
 con = DriverManager.getConnection(url, user, password);
 st = con.createStatement();
 /* 4) 执行SELECT语句 */
 rs = st.executeQuery("SELECT 1 AS col_1");	//把常量 1 作为 1 行 1 列的结果返回

 /* 5) 在画面中显示结果 */
 rs.next();
 System.out.print(rs.getInt("col_1"));
 //程序执行成功之后,命令提示符中会显示“1”

 /* 6) 切断与PostgreSQL的连接 */
 rs.close();
 st.close();
 con.close();
 }
}

C:\PostgresSQL\java\src\DBConnectl.java

执行连接数据库的程序

编译

C:\PostgresSQL\java\jdk\bin\javac DBConnectl.java

指定 JDBC驱动文件并执行

C:\PostgresSQL\java\jdk\bin\java -cpC:\PostgresSQL\jdbc\*;.DBConnectl

cp”是“类路径(classpath)”的缩写,也就是“类文件保存位置”的意思
jar文件就是多个class文件的集合,jar文件的位置也是通过类路径来指定的
”在 Windows 中是“全部字符串”的意思,“;”是包含多个路径时的分隔符*,“.”代表的是当前文件夹

执行上述命令后,如果命令提示符中显示“1”,就代表执行成功了

选取表中的数据

//从Product表中选取product_id和product_name这两列全部数据的Java程序
import java.sql.*;
public class DBConnect2{
 public static void main(String[] args) throws Exception {
 /* 1) PostgreSQL的连接信息 */
 Connection con;
 Statement st;
 ResultSet rs;
 String url = "jdbc:postgresql://localhost:5432/shop";
 String user = "postgres";
 String password = "test";

 /* 2) 定义JDBC驱动 */
 Class.forName("org.postgresql.Driver"); 
 /* 3) 连接PostgreSQL */
 con = DriverManager.getConnection(url, user, password);
 st = con.createStatement();
 /* 4) 执行SELECT语句 */
 rs = st.executeQuery("SELECT product_id, product_name
FROM Product");

 /* 5) 在画面中显示结果 */
 while(rs.next()) {
 System.out.print(rs.getString("product_id") + ", ");
 System.out.println(rs.getString("product_name"));
 } 
 
 /* 6) 切断与PostgreSQL的连接 */
 rs.close();
 st.close();
 con.close();
 }
}

编译

C:\PostgreSQL\java\jdk\bin\javac DBConnect2.java

执行

C:\PostgreSQL\java\jdk\bin\java –cp C:\PostgreSQL\jdbc\*;. DBConnect2

对Java这样的程序语言而言,数据访问都是逐行进行的,想要处理多行数据时,就需要使用循环来实现

更新表中的数据

//执行用于更新的SQL语句来更新表中数据的Java 程序
import java.sql.*;
public class DBConnect3{
 public static void main(String[] args) throws Exception {
 /* 1) PostgreSQL的连接信息 */
 Connection con;
 Statement st;
 String url = "jdbc:postgresql://localhost:5432/shop";
 String user = "postgres";
 String password = "test";

 /* 2) 定义JDBC驱动 */
 Class.forName("org.postgresql.Driver");
 
 /* 3) 连接PostgreSQL */
 con = DriverManager.getConnection(url, user, password);
 st = con.createStatement();
 
 /* 4) 执行SELECT语句 */
 int delcnt = st.executeUpdate("DELETE FROM Product"); 
 //不论 INSERT 语句还是 UPDATE 语句,Java 在执行用于更新的 SQL 语句时使用的都是 executeUpdate

 /* 5) 在画面中显示结果 */
 System.out.print(delcnt + "已删除行"); 
 
 /* 6) 切断与PostgreSQL的连接 */
 st.close();
 con.close();
 }
}

编译

C:\PostgreSQL\java\jdk\bin\javac DBConnect3.java

执行

C:\PostgreSQL\java\jdk\bin\java –cp C:\PostgreSQL\jdbc\*;. DBConnect3

执行成功之后,命令提示符中会显示“8 条数据已经被删除”

通过使用驱动,程序可以执行包括SELECT、DELETE、UPDATE和INSERT在内的所有 SQL语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值