Java与数据库的连接

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.");
	}
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值