package com.demo;
import java.sql.*;
/* JDBC须知:
* JDBC提供了用于执行SQL语句标准的Java API,它由一组用Java语言编写的类与接口组成。
* JDBC驱动主要分为JDBC-ODBC桥驱动和纯Java驱动两类。
* JDBC操作数库的步骤是:注册驱动、建立连接、发送SQL语句、处理结果。
* DriverManager类负责建立数据库连接;
* Statement和PreparedStatement负责操作数据库;
* ResultSet负责接收并显示数据库返回的结果集。
* */
public class DBSQL {
/**
* 2019.3.13
* @zjy
*/
public static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//连接数据库时需用到的驱动器
public static String url = "jdbc:sqlserver://127.0.0.1:1433;DataBaseName=Library";//连接目标所在地址
/* 连接到MySQL 5.0数据库:
* public static final String driver = "com.mysql.jdbc.Driver"; public
* static final String url = "jdbc:mysql://127.0.0.1/Demo";
*/
/* 连接到Oracle 9i数据库:
* public static final String driver = "oracle.jdbc.driver.OracleDriver";
* public static final url = "jdbc:oracle:thin:@127.0.0.1:1521:Demo";
*/
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 获取Connection对象即表示连接数据库,这是操作数据库的前提。
Connection con = null;
/* Statement主要用于执行SQL语句、进行对数据库的操作。其常用方法如下:
* int executeUpdate(String sql) 执行数据库更新SQL语句:Insert、update、delete,返回更新的记录数
* ResultSet executeQuery(String sql) 执行数据库查询 操作,返回结果集对象
* boolean execute(String sql) 执行sql语句,返回false表示执行成功,true表示执行失败
* void close() 关闭Statement操作
*/
Statement sta = null;
/* 在JDBC中,数据库的所有查询记录将使用ResultSet接收并显示内容,ResultSet常用的方法如下:
* boolean next() 将指针移到下一行
* int getInt(String columnName) 以整数形式取得指定列的内容
* int getInt(String columnName) 以整数形式取得指定列的内容
* String getString(int columnIndex) 以字符串形式按列的编号取得指定列的内容
* String getString(String columnName) 以字符串形式取得指定列的内容
* */
ResultSet rs = null;
//1、LOADING:根据类的名字装载驱动(该驱动被封装成driver)
Class.forName(driver);
//2、CREATED:加载驱动,建立连接——getConnection()方法中的参数表示:地址、用户名、密码
con = DriverManager.getConnection(url, "sa", "123456");//单例设计模式("类名."进行调用)
//3、创建连接对象Statement,用于发送SQL语句、进行数据库操作
sta = con.createStatement();
/*
System.out.println("******增加记录*******");
int i = sta.executeUpdate("INSERT INTO student VALUES('1750300173', '朱俊艳', '女', 18)");
if (i > 0) {
System.out.println("******操作成功*******");
System.out.println();
}*/
/*
System.out.println("******删除记录*******");
String delSql = "DELETE student WHERE NO = '1750300173'";
int i = sta.executeUpdate(delSql);
if (i > 0) {
System.out.println("******操作成功*******");
System.out.println();
}*/
/*
System.out.println("******更新记录*******");
int age = 20;
String updateSql = "UPDATE student SET age = '" + age + "' WHERE NO = '1750300173'";
int i = sta.executeUpdate(updateSql);
if (i > 0) {
System.out.println("******更新成功*******");
System.out.println();
}*/
/* 第一种查询所有记录的方式:sta.executeQuery()
System.out.println("******查询记录*******");
rs = sta.executeQuery("SELECT * FROM student");
while(rs.next()) {
System.out.println("学号 : " + rs.getString(1)); //根据记录表的列来获取值。分别为第1/2/3/4列
System.out.println("姓名 : " + rs.getString(2));
System.out.println("性别 : " + rs.getString(3));
System.out.println("年龄 : " + rs.getFloat(4));
System.out.println("------------------");
}*/
/* PreparedStatement接口简介:
* 继承自Statement,所以可以实现Statement里的方法。
* 它执行SQL语句时具有一个或多个输入参数,且为每个输入参数保留一个问号(?)作为占位符。
* PreparedStatement执行带参数的SQL语句时,应为每个占位符赋值。
* PreparedStatement接口常用方法示例:
* Step1、执行的操作可以有:
* pst = con.prepareStatement(“update book set bookName=?,author=? Where bookID=?”);
* pst = con.prepareStatement("insert into book values(?,?,?)");
* pst = con.prepareStatement("delete from book where bookID=?");
* pst = con.prepareStatement("select * from book where bookID=?");
* Step2、为占位符赋值
* Step3、pst.execute();
* */
/* 第二种查询所有记录的方式:PreparedStatement接口
* */
System.out.println("******查询记录*******");
String sql = "SELECT * FROM student WHERE NO = ?";
PreparedStatement psta = con.prepareStatement(sql);
psta.setString(1, "1750300173"); //为第一个占位符赋值(当有多个占位符时,第一个参数就分别表示第1/2/3...个占位符,第二个参数表示赋的值)
rs = psta.executeQuery();
while(rs.next()){
System.out.println("学号 : " + rs.getString(1)); //根据记录表的列来获取值。分别为第1/2/3/4列
System.out.println("姓名 : " + rs.getString(2));
System.out.println("性别 : " + rs.getString(3));
System.out.println("年龄 : " + rs.getFloat(4));
System.out.println("------------------");
}
//数据库连接会占用系统资源,所以使用完连接后要关闭连接。实际开发中为提高效率,通常情况下会建立一个用于管理连接和对象的类。
if(rs != null)
rs.close();
if(sta != null)
sta.close();
if(con != null)
con.close();
System.out.println();
System.out.println("The database has been closed.");
}
}
Java与数据库的连接
最新推荐文章于 2024-06-04 20:26:35 发布