java06_jdbc
来源:互联网 发布:c语言使用cos函数 编辑:程序博客网 时间:2024/06/06 01:49
jdbc Java DataBase Connectivity,java数据库连接
有了数据库 才有了人与计算机之间信息的交互
为了把Java中的数据永久的保存下来 存到数据库里 修改 删 查
制作数据库的人会制作对应的驱动 使用户能更好的连接和使用当前的数据库
连接数据库需要用到三个对象
Connection 连接对象 连接数据库
stmtement 语句对象 发送SQL语句
resultSet 结果集对象 数据库返回数据结果 J
因为Java同一个应用 只能连接一个database
准备四个参数
1. 连接的数据库的地址 IP 指明连接库名
2. 用户名
3. 密码
4. 端口 pid 3306 /3308
四个参数 合并3
URL = 数据库的ip/库名/端口 每个数据库的url 写法都不一样
用户名
密码
1.建立连接 用connection 需要使用参数 URL用户名密码
加载数据库的驱动 驱动从网上下载 .jar 压缩文件
jar是Java class专用压缩包 第三方开源类库
1. 把驱动包拷贝到功能的根目录
2. 把包构建build到工程中 才能使用
2.使用连接来建立交互的语句对象 用来发送SQL
package com.hzyc.tools;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DbTools {
/* //如果有写数据 想让类加载或者构造方法调用就初始化了
public DbTools(){
}
private static Connection conn = null;
private static Statement stmt = null;
private static ResultSet rs = null;
private static String url = "jdbc:mysql://localhost:3306/hostelsystem";//非安装版端口写成
3308,数据库名根据自己的改
//localhost 在这里表示的是本机的服务器 即数据库的ip
private static String username = "root";//数据库名
private static String password = "mysql";//数据库密码
static{
try{
Class.forName("com.mysql.jdbc.Driver");//加载驱动包
conn = DriverManager.getConnection(url, username, password);//连接数据库
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public int update(String sql){
int result = 0;
try{
stmt = conn.createStatement();
result = stmt.executeUpdate(sql);
}catch(SQLException e){
e.printStackTrace();
}
return result;
}
//获取多列数据
public List<Map<String,Object>> query1(String sql){
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
try{
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
while(rs.next()){
Map<String,Object> map = new HashMap<String,Object>();
for(int i = 1; i<=count; i++){
//取出每一列的名字
String columnName = rsmd.getColumnName(i);
Object columbValue = rs.getObject(columnName);
map.put(columnName, columbValue);
}
list.add(map);
}
}catch(SQLException e){
e.printStackTrace();
}
return list;
}
//获取单列数据
public static List<Object> query2(String sql){
List<Object>list=new ArrayList<Object>();
try {
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
list.add(rs.getObject(1));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
/**
* 释放资源
* 关闭连接
*/
public void close(){
try{
if(rs != null){
rs.close();
}
if(stmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
}