您的位置:首页 > 编程语言 > Java开发

Java 学习笔记----数据库操作(一)

2017-05-22 20:59 399 查看

一、基本概念

1、JDBC 的全称 是Java Database Connectivity ,即Java数据库连接,它是一种可以执行SQL语句的java API。 程序可通过JDBC API连接到关系数据库,并使用结构化查询语言(SQL,数据库标准的查询语言)来完成对数据库的查询、更新。

2、JDBC 三个基本工作:

1)建立与数据库连接;

2)执行SQL语句;

3)获得SQL语句的执行结果。

二、连接数据库步骤:

添加MySQL JDBC

以MySQL数据库为例:

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Date;
import com.mysql.jdbc.Connection;

public class JDBCTest {

//数据库连接
private Connection con = null;
//声明
private PreparedStatement sql;
//执行结果
private ResultSet res;

public JDBCTest() {
con = getConnection();// 连接数据库
/**
* 执行语句
*/
closeData();// 关闭连接,避免数据库一直连接

}

/**
* 127.0.0.1是本地IP地址,选择localhost 不经过网卡 连接数据库
*
*
* @return com.mysql.jdbc.Connection
*/
public Connection getConnection() {
Connection conn = null;
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
java.lang.String dbname = "数据库名";
String url = "jdbc:mysql://127.0.0.1:3306/" + dbname + "?useUnicode=true&characterEncoding=UTF-8";
// &autoReconnect=true
conn = (Connection) DriverManager.getConnection(url, "root", "bstek");

// 开启事务
conn.setAutoCommit(false);
} catch (Exception e) {

System.err.println("连接数据库有误!!");
}
return conn;
}

/**
* 获取错误的account 例如:sql_str="select * from table name where status =0"
*
* @return collection<Account> account
* @throws SQLException
*/
public void query(String sql_str) throws SQLException {
sql = con.prepareStatement(sql_str);
res = sql.executeQuery();
con.commit();
while (res.next()) {
res.getString(1);// columnIndex执行效率比下面高
res.getString("columnLabel");
}
}

/**
* 先查询,后更新
*
* @param date
* @param name
* @param id
*/
public void update1(Date date, String name, int id) {

try {
sql = con.prepareStatement("select * from tablename where id =  " + id, ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
res = sql.executeQuery();
con.commit();

if (res.next()) {
res.updateString(2, name);
res.updateDate(3, date);
res.updateRow();

}

} catch (SQLException e) {
try {
con.rollback();
} catch (SQLException e1) {

e1.printStackTrace();
}
e.printStackTrace();
}

}

/**
* 直接使用sql语句set更新 tablename 使用的时候 要换成具体的表名
*
* @param name
* @param Id
*/
public void update2(String name, int Id) {
try {
String sql_Str = "update tablename set name='" + name + "' where id ='" + Id + "'";
sql = con.prepareStatement(sql_Str);
sql.executeUpdate();
con.commit();
} catch (SQLException e) {
try {
con.rollback();
} catch (SQLException e1) {

e1.printStackTrace();
}
e.printStackTrace();
}
}

/**
*
* @param number
* @param Name
* @param id
*/
public void insert(String number, String Name, int id) {

try {
sql = con.prepareStatement(
// 问号的数量 等于 数据表的数量
"insert into tablename value(?,?,?)");
sql.setInt(1, id);
sql.setString(2, Name);
sql.setString(3, number);

sql.executeUpdate();
con.commit();
} catch (SQLException e) {
try {
// 数据库回滚
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
}

/**
* 删除数据库
*
* @param name
*/
public void delete(String name) {
try {
sql = con.prepareStatement("delete from 表名 where name= " + name);
sql.executeUpdate();
con.commit();
} catch (SQLException e) {
try {
con.rollback();
} catch (SQLException e1) {

e1.printStackTrace();
}
System.err.println("报错");
}

}

/**
* 关闭数据库 连接
*/
public void closeData() {
// 关闭记录集
if (res != null) {
try {
res.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

// 关闭声明
if (sql != null) {
try {
sql.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

// 关闭链接对象
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: