您的位置:首页 > 数据库

jdbc操作数据库插入、更新、删除、查找

2016-05-26 21:37 477 查看
mysql数据库:

public boolean insertFrom(Person per){

boolean flag = false;

Connection conn = null;

conn = JdbcCon.jdbcConMysql();

PreparedStatement ps = null;

String sql = "insert into person(name,birthday,sex) values(?,?,?)";

try {

ps = conn.prepareStatement(sql);

ps.setString(1, per.getName());

ps.setDate(2, per.getBirthday());

ps.setInt(3, per.getSex());

int i = ps.executeUpdate();

if(i != 0){

flag = true;

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

JdbcCon.closeAll(null, ps, conn);

}

return flag;

}

public boolean updateFrom(int id,int sex,String name){

boolean flag = false;

Connection conn = null;

conn = JdbcCon.jdbcConMysql();

String sql = "update person set sex=?,name=? where id=?";

PreparedStatement ps = null;

try {

ps = conn.prepareStatement(sql);

ps.setInt(1, sex);

ps.setString(2, name);

ps.setInt(3, id);

int i = ps.executeUpdate();

if(i != 0){

flag = true;

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

JdbcCon.closeAll(null, ps, conn);

}

return flag;

}

public boolean deleteFrom(int id){

boolean flag = false;

Connection conn = null;

conn = JdbcCon.jdbcConMysql();

PreparedStatement ps = null;

String sql= "delete from person where id=?";

try {

ps = conn.prepareStatement(sql);

ps.setInt(1, id);

int i = ps.executeUpdate();

if(i != 0){

flag = true;

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

JdbcCon.closeAll(null, ps, conn);

}

return flag;

}

public Person selectFrom(String name,int id){

Person per = null;

Connection conn = null;

conn = JdbcCon.jdbcConMysql();

String sql = "select * from person where id=? and name=?";

PreparedStatement ps = null;

ResultSet rs = null;

try {

ps = conn.prepareStatement(sql);

ps.setInt(1, id);

ps.setString(2, name);

rs = ps.executeQuery();

while(rs.next()){

per = new Person();

per.setBirthday(rs.getDate("birthday"));

per.setId(rs.getInt("id"));

per.setName(rs.getString("name"));

per.setSex(rs.getInt("sex"));

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

JdbcCon.closeAll(rs, ps, conn);

}

return per;

}

Oracle数据库:

public boolean insertStu(Stu stu){

boolean flag = false;

Connection conn = null;

Statement st = null;

StringBuilder sql = new StringBuilder();

sql.append("insert into stu(id,stu_num,stu_name) values(seq_stu_id.nextval,'");

sql.append(stu.getStu_num());

sql.append("','");

sql.append(stu.getStu_name());

sql.append("')");

conn = DBConn.getConn();

try {

st = conn.createStatement();

int i = st.executeUpdate(sql.toString());

if(i != 0){

flag = true;

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

DBConn.closeAll(null, st, conn);

}

return flag;

}

public static void main(String[] args) {

Stu stu = new Stu();

stu.setStu_name("aaabbbbccc");

stu.setStu_num("6543211");

StuDao dao = new StuDao();

System.out.println(dao.insertStu(stu));

}

封装

public class JdbcCon {

private static String jdbcDriver = "";

private static String jdbcUrl = "";

private static String jdbcUser = "";

private static String jdbcpasswd = "";

static {

InputStream is = null;

try {

is = JdbcCon.class.getClassLoader().getResourceAsStream("database.properties");

Properties p = new Properties();

p.load(is);

jdbcDriver = p.getProperty("jdbcDriver");

jdbcUrl = p.getProperty("jdbcUrl");

jdbcUser = p.getProperty("jdbcUser");

jdbcpasswd = p.getProperty("jdbcpasswd");

// System.out.println(p.getProperty("jdbcDriver"));

// System.out.println(p.getProperty("jdbcUrl"));

// System.out.println(p.getProperty("jdbcUser"));

// System.out.println(p.getProperty("jdbcpasswd"));

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if(is != null){

is.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

public static Connection jdbcConMysql(){

Connection conn = null;

try {

Class.forName(jdbcDriver);

conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcpasswd);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

public static void closeAll(ResultSet rs,Statement st,Connection conn){

try {

if(rs != null){

rs.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

try {

if(st != null){

st.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

try {

if(conn != null){

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

public static void closeAll(ResultSet rs,PreparedStatement ps,Connection conn){

try {

if(rs != null){

rs.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

try {

if(ps != null){

ps.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

try {

if(conn != null){

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

properties写在src目录下,JdbcCon.class.getClassLoader().getResourceAsStream()默认在src目录下找properties文件

mysql数据库链接参数:

#以下是mysql数据库的配置信息

#jdbcDriver=com.mysql.jdbc.Driver

#jdbcUrl=jdbc:mysql://localhost:3306/change

#jdbcUser=root

#jdbcPasswd=476645144

oracle数据库链接参数:

#以下是oracle数据库的配置信息

#jdbcDriver=oracle.jdbc.driver.OracleDriver

#jdbcUrl=jdbc:oracle:thin:@localhost:1521:ORCL

#jdbcUser=scott

#jdbcPasswd=tiger

批处理四种方式比较。

public boolean regUser(User user){

boolean flag = false;

Connection conn = null;

PreparedStatement ps = null;

String sql = "insert into user(email,passwd,nickname,sex) values(?,?,?,?)";

conn = DBConn.getConn();

try {

ps = conn.prepareStatement(sql);

ps.setString(1, user.getEmail());

ps.setString(2, user.getPasswd());

ps.setString(3, user.getNickname());

ps.setInt(4, user.getSex());

int i = ps.executeUpdate();

if(i != 0){

flag = true;

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

DBConn.closeAll(null, ps, conn);

}

return flag;

}

public boolean insertUsersByCom(List<User> list){

boolean flag = true;

Connection conn = null;

Statement st = null;

conn = DBConn.getConn();

try {

st = conn.createStatement();

for (User user : list) {

StringBuilder sql = new StringBuilder();

sql.append("insert into user(email,passwd,sex,nickname) values('");

sql.append(user.getEmail());

sql.append("','");

sql.append(user.getPasswd());

sql.append("',");

sql.append(user.getSex());

sql.append(",'");

sql.append(user.getNickname());

sql.append("')");

System.out.println(sql.toString());

int i = st.executeUpdate(sql.toString());

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

DBConn.closeAll(null, st, conn);

}

return flag;

}

public boolean insertUsersByPre(List<User> list){

boolean flag = true;

Connection conn = null;

PreparedStatement ps = null;

String sql = "insert into user(email,passwd,nickname,sex) values(?,?,?,?)";

conn = DBConn.getConn();

try {

ps = conn.prepareStatement(sql);

for (User user : list) {

ps.setString(1, user.getEmail());

ps.setString(2, user.getPasswd());

ps.setString(3, user.getNickname());

ps.setInt(4, user.getSex());

int i = ps.executeUpdate();

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

DBConn.closeAll(null, ps, conn);

}

return flag;

}

public boolean insertUsersByStandard(List<User> list){

boolean flag = true;

Connection conn = null;

PreparedStatement ps = null;

String sql = "insert into user(email,passwd,nickname,sex) values(?,?,?,?)";

conn = DBConn.getConn();

try {

ps = conn.prepareStatement(sql);

for (User user : list) {

ps.setString(1, user.getEmail());

ps.setString(2, user.getPasswd());

ps.setString(3, user.getNickname());

ps.setInt(4, user.getSex());

//真正的批处理 在这里并不执行 而是将当前的这条命令 加入到批处理的队列中

ps.addBatch();

}

ps.executeBatch();//执行批处理命令

} catch (SQLException e) {

e.printStackTrace();

} finally {

DBConn.closeAll(null, ps, conn);

}

return flag;

}

public static void main(String[] args) {

List<User> list = new ArrayList<User>();

for (int i = 0; i < 10; i++) {

User user = new User();

user.setEmail("xiaowang" + i + "@126.com");

user.setNickname("wang" + i);

user.setPasswd("8787878");

user.setSex(0);

list.add(user);

}

// UserDao dao = new UserDao();

//第一种  调用regUser(User user)插入10条记录  获取连接和statement各10次  sql语句编译和执行各10次  关闭10次

// for (User user : list) {

// dao.regUser(user);

// }

//第二种 调用insertUsersByCom(List<User> list)  获取连接和statement各一次 sql语句编译和执行各10次 关闭一次

// dao.insertUsersByCom(list);

//第三种 调用insertUsersByPre(List<User> list)  获取连接和statement各一次 sql语句编译一次  执行10次 关闭一次

// dao.insertUsersByPre(list);

//第四种 调用insertUsersByStandard(List<User> list) 获取连接和statment sql语句编译执行 关闭都仅有一次

UserDao.getInstance().insertUsersByStandard(list);

}

数据库的事务,把conn的自动提交模式改为手动提交,当两条sql语句都成功完成时才提交,否则都回滚。

public boolean transferMoney(String from,String to,double money){

boolean flag = false;

String sql1 = "update bank set money=money-? where bankcard=?";

String sql2 = "update bank set money=money+? where bankcard=?";

Connection conn = null;

PreparedStatement ps = null;-

conn = DBConn.getConn();

try {

conn.setAutoCommit(false);//将自动提交模式改为手动提交(autoCommit - 为 true 表示启用自动提交模式;为 false 表示禁用自动提交模式)

ps = conn.prepareStatement(sql1);

ps.setDouble(1, money);

ps.setString(2, from);

int i1 = ps.executeUpdate();

ps = conn.prepareStatement(sql2);

ps.setDouble(1, money);

ps.setString(2, to);

int i2 = ps.executeUpdate();

if(i1 != 0 && i2 != 0){

flag = true;

conn.commit();//手动提交

}else{

conn.rollback();//回滚

}

} catch (SQLException e) {

e.printStackTrace();

try {

conn.rollback();//发生一场也回滚

} catch (SQLException e1) {

e1.printStackTrace();

}

} finally {

DBConn.closeAll(null, ps, conn);

}

return flag;

}

单例模式    只能new一次,节省资源省开销,通常在dao包中使用

private NewsDao(){

}

private static NewsDao dao = null;

public static NewsDao getInstance(){

if(dao == null){

dao = new NewsDao();

}

return dao;

}

/**

* @param value:指的是用户输入的邮箱或者是昵称的信息

* @param type :指的是该次验证的字段是哪个字段  如果0代表验证的邮箱 1代表验证的昵称

* @return

* @function:验证用户输入的email或者是昵称是否被占用

*/

public static boolean isOnly(String value,int type){

boolean flag = true;

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

StringBuilder sql = new StringBuilder();

sql.append("select id from user where ");

sql.append(type==0?" email=? ":" nickname=?");

System.out.println(sql.toString());

conn = DBConn.getConn();

try {

ps = conn.prepareStatement(sql.toString());

ps.setString(1, value);

rs = ps.executeQuery();

while (rs.next()) {

flag = false;

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

DBConn.closeAll(rs, ps, conn);

}

return flag;

}

/**

* @return

* @function:分页查询最新注册用户的信息

*/

public List<User> getUsersByPag(int startRow,int size){

List<User> list = new ArrayList<User>();

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

String sql = "select * from user order by id desc limit ?,?";

User user = null;

conn = DBConn.getConn();

try {

ps = conn.prepareStatement(sql);

rs = ps.executeQuery();

while (rs.next()) {

user = new User();

user.setEmail(rs.getString("email"));

user.setAddtime(rs.getDate("addtime"));

user.setId(rs.getInt("id"));

user.setNickname(rs.getString("nickname"));

user.setPasswd(rs.getString("passwd"));

user.setSex(rs.getInt("sex"));

list.add(user);

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

DBConn.closeAll(rs, ps, conn);

}

return list;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: