1、jdbc是一个java链接数据库技术,java可以通过jdbc对数据库完成增、删、改、查操作, 核心的接口主要封装在sql包下面, java只提供了固定的接口,具体的实现类需要靠各大数据库厂商自行实现,所以我们要根据自己使用的数据库不同去使用不同的实现类,也就是外部的jar包,
jdbc:helloword
String url = "jdbc:mysql://192.168.1.128:3306/test";
String userName = "root";
String pwd = "root";
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//得到链接
Connection conn = DriverManager.getConnection(url, userName, pwd);
//预处理SQL对象
PreparedStatement pre = conn.prepareStatement
("insert into user values(3,'lisi','234567',1,now())");
//发送并执行sql
pre.executeUpdate();
//往数据插入3条数据, 吧第二条密码修改为1111 吧第三条删除
} catch (Exception e) {
e.printStackTrace();
}
jdbc操作分4部,加载驱动,获取链接,创建预处理sql对象,发送并执行sql,由于我们的数据库操作都是以会话的形式实现,所以使用万链接以后需要进行关闭,为方便以后操作,我们可以封装一个工具类:DBUtils
package com.xingxue.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBUtils {
public static String url="jdbc:mysql://localhost:3306/test";
public static String driver="com.mysql.jdbc.Driver";
public static String user="root";
public static String pwd="root";
/**
* 获取数据库链接
* @return
*/
public static Connection getConn() {
Connection conn = null;
try {
//加载驱动
Class.forName(driver);
//获取链接
conn = DriverManager.getConnection(url, user, pwd);
} catch (Exception e) {
// TODO: handle exception
}
return conn;
}
/**
* 关闭数据库资源
* @param conn
* @param pre
* @param rs
*/
public static void closeDB(Connection conn, PreparedStatement pre, ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
if(pre != null) {
pre.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
利用jdbc查询实现登陆
/**
* 用户登陆
* @param loginUser
* @return
*/
public boolean userLogin(User loginUser) {
boolean isLogin = false;
Connection conn = null;
PreparedStatement pre = null; //这是一个预处理sql对象, 检查sql语句是否有语法错误,编译sql
ResultSet rs = null; //查询的数据就装在rs里面, 就是高级HashMap
// String sql = "select * from user where account='"+loginUser.getAccount()+"' and pwd = '"+loginUser.getPwd()+"'";
String sql2 = "select * from user where account=? and pwd =?"; //? 占位符
try {
conn = DBUtils.getConn();
pre = conn.prepareStatement(sql2);
//设置参数
pre.setString(1, loginUser.getAccount());
pre.setString(2, loginUser.getPwd());
rs = pre.executeQuery();
isLogin = rs.next();
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtils.closeDB(conn, pre, rs);
}
return isLogin;
}
利用jdbc实现查询列表数据:
/**
* 查询所有商品信息
* @return
*/
public ArrayList<Goods> getAllGoods() {
ArrayList<Goods> list = new ArrayList<Goods>();
Connection conn = null;
PreparedStatement pre = null;
ResultSet rs = null;
String sql = "select * from goods";
try {
conn = DBUtils.getConn();
pre = conn.prepareStatement(sql);
rs = pre.executeQuery();
Goods g = null;
while(rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("NAME");
String statu = rs.getString("statu");
Date createDate =rs.getDate("createDate");
double price = rs.getDouble("price");
int num = rs.getInt("num");
g = new Goods(id, name, price, statu, createDate, num);
list.add(g);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtils.closeDB(conn, pre, rs);
}
return list;
}
利用jdbc完成数据删除:
/**
* 删除数据
* @param id
* @return
*/
public boolean deleteGoodsById(int id) {
boolean isDelete = false;
Connection conn = null;
PreparedStatement pre = null;
ResultSet rs = null;
String sql = "delete from goods where id = ?";
int result = 0;
try {
conn = DBUtils.getConn();
pre = conn.prepareStatement(sql);
pre.setInt(1, id);
result = pre.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtils.closeDB(conn, pre, rs);
}
return result > 0;
}
此处注意: 增、删、改数据使用pre.executeUpdate();方法
查询数据使用:pre.executeQuery();方法