我是靠谱客的博主 踏实导师,最近开发中收集的这篇文章主要介绍Java-Jdbc 数据库操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Java连接/操作数据库步骤:

  1. 驱动
  2. 连接
  3. 执行SQL语句
  4. 获得结果集或受影响函数
  5. 关闭连接

1.驱动包下载地址:(在各个官网有下载,如果嫌麻烦的以下地址掏一个资源分去下吧)
mysql: http://download.csdn.net/detail/yuyang2013/5137075 (版本: 3.x 5.x)
oracle: http://download.csdn.net/detail/yuyang2013/5137107  
sqlserver: http://download.csdn.net/detail/yuyang2013/5137119  (版本:2000、2005)

2. 连接
SQL Server 2000下的连接串:
DRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";
URL="jdbc:microsoft:sqlserver://IP:端口(默认1433);databaseName=ssoDemo;user=sa;password=1";

SQL Server 2005下的连接串:
DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
URL="jdbc:sqlserver://IP:端口(默认1433);databaseName=ssoDemo;user=sa;password=1";

Oracle  连接字符串:
Driver="oracle.jdbc.driver.OracleDriver"
URL=jdbc:oracle:thin:@IP:端口:数据库名,"用户名","密码"

MySQL driver
com.mysql.jdbc.Driver
jdbc:mysql://IP:端口(默认3306)/dbname?useUnicode=true&characterEncoding=GBK

DB2  driver
COM.ibm.db2.jdbc.net.DB2Driver 
jdbc:db2://IP:端口(默认50002)/name


3.代码部分(暂不考虑连接池和单例模式)
package com.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/** 
 * @Description: Java数据库操作
 */
public class JavaJdbc {

	private static final String DRIVER = "数据库驱动-不同的数据库驱动是不一样的";
	private static final String URL = "数据库连接串-不同的数据库连接串是不一样的";
	private static final String USER = "用户名";
	private static final String PWD = "密码";
	
	private static Connection conn;//数据库链接
	private PreparedStatement pstmt;//预执行,预先执行下SQL看是否正确 主要检查语法和参数  * 为了避免SQL注入 不建议再用 Statement
	private ResultSet rs;//返回结果集
	
	/**
	 * 执行数据库驱动
	 * 获取数据库连接
	 * @throws ClassNotFoundException --此异常是指我们反射的数据库驱动类找不到
	 * @throws SQLException --此异常是指数据库连接异常造成原因很多种[网络故障;用户名、密码、连接地址错误]
	 */
	public JavaJdbc() throws ClassNotFoundException, SQLException {//在类被初始化调用的时候执行
		
		Class.forName(DRIVER);//执行数据库驱动
		/* 这里我们讨论下 为什么要用反射机制来获取数据库驱动?
		 * 其实这里也可以不用反射,直指其包名也是一样的
		 * 这里用反射的好处是如果我们更换了数据库驱动,不需要再次用JVM编译此数据库连接类
		 * ----提到反射机制如果有不明白的童鞋可以先在网上了解了解。
		 */
		
		conn = DriverManager.getConnection(URL, USER, PWD);//连接数据库
	}
	
	/**
	 * 关闭数据库链接
	 * 释放资源和拉完屎要擦屁股一样
	 * @throws SQLException --关闭时出现异常此异常一般是不会出现的,除非这个时候数据库和你的程序异常断开
	 */
	public void closeAll() throws SQLException {
		if (rs != null) {//结果集
			rs.close();
			rs = null;
		}
		if (pstmt != null) {//预执行
			pstmt.close();
			pstmt = null;
		}
		if (conn != null) {//数据库连接
			conn.close();
			conn = null;
		}
	}
	
	/**
	 * 将参数设置到预处理SQL中
	 * @param pstmt
	 * @param values
	 * @return
	 * @throws SQLException
	 */
	@SuppressWarnings("unchecked")
	public PreparedStatement setValues(PreparedStatement pstmt, List values) throws SQLException {
		
		if(null != pstmt && values.size() > 0){
			for (int i = 0; i < values.size(); i++) {
				pstmt.setObject(i + 1, values.get(i));
			}
		}

		return pstmt;
	}
	
	/**
	 * 执行查询语句
	 * @param sql 查询SQL
	 * @param values 查询SQL带的参数
	 * @return 返回查询结果集
	 * @throws SQLException --执行失败[比如:查询时SQL不正确,传入的参数不够] 
	 */
	@SuppressWarnings("unchecked")
	public ResultSet exeuteQuery(String sql, List values) throws SQLException {
		pstmt = conn.prepareStatement(sql);
		if (null != values && values.size() > 0) {
			this.setValues(pstmt, values);
		}
		rs = pstmt.executeQuery();
		return rs;
	}
	
	/**
	 * 执行更新数据库语句
	 * @param sql 更新SQL
	 * @param values 更新SQL带的参数
	 * @return 返回执行此SQL后影响了几条数据库数据
	 * @throws SQLException 
	 */
	@SuppressWarnings("unchecked")
	public int exeuteUpdate(String sql, List values) throws SQLException {
		pstmt = conn.prepareStatement(sql);
		if (null != values && values.size() > 0) {
			this.setValues(pstmt, values);
		}
		return	pstmt.executeUpdate();
	}
	
	/**
	 * 测试一下
	 * 找user表中18岁到25岁的妞
	 * 看看她们的资料 QQ 电话 名字 最重要的照片 ^-^
	 * 能不能泡上她
	 */
	@SuppressWarnings("unchecked")//这个意思是不检查警告,我很讨厌看到警告啦,强迫症
	public static void main(String[] args) {
		JavaJdbc jdbc = null;
		String sql;
		List params;
		ResultSet rs;
		
		try {
			sql = " select age, name, telPhone, photo, QQ from user where age >= ? and age <= ? and sex = ? ";
			/* 
			 * 1、参数中的顺序一定要对应 SQL中的 ‘?’ 
			 * 2、参数不分类型
			 */
			params = new ArrayList();
			params.add(18);
			params.add(25);
			params.add("妞");
			jdbc = new JavaJdbc();
			rs = jdbc.exeuteQuery(sql, params);
			if(null != rs){
				while (rs.next()) {
					System.out.println( "姓名:" + rs.getString("name") + " 年龄:" + rs.getString("age") + " 素颜照:" + rs.getString("photo") );
					System.out.println( "电话:" + rs.getString("2") + " QQ:" + rs.getString("4"));
					/*
					 * 这里用了两种方法取值
					 * 1、直接用名字
					 * 2、用参数索引 从0开始算起
					 */
				}
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace(); //异常捕获处理
			return;
		} catch (SQLException e) {
			e.printStackTrace(); //异常捕获处理
			return;
		}finally{
			//最后别忘了擦屁股
			try {
				if(null != jdbc){
					jdbc.closeAll();
				}
			} catch (SQLException e) {
				e.printStackTrace();//这个异常咋办,纸破了擦到手上了,还不快洗?小心粘到裤子衣服上
			}
		}
	}
	
}

以上代码均为本人测试过的代码,改改连接,用户名,密码即可使用。
jar包有提供下载地址。


最后

以上就是踏实导师为你收集整理的Java-Jdbc 数据库操作的全部内容,希望文章能够帮你解决Java-Jdbc 数据库操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部