概述
Java连接/操作数据库步骤:
- 驱动
- 连接
- 执行SQL语句
- 获得结果集或受影响函数
- 关闭连接
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
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 数据库操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复