JavaWeb学习心得之JDBC对数据库CRUD

来源:互联网 发布:scala编程思想 pdf下载 编辑:程序博客网 时间:2024/06/05 04:36

一、statement对象简介

       Jdbc中statement对象用于向数据库发送SQL语句,statement对象executeUpdate方法,用于向数据库发送增、删、改的sql语句,执行完后返回整数;executeQuery方法用于向数据库发送查询语句,返回代表查询结果的ResultSet对象。

CRUD操作

1.create

Statement st = conn.createStatement();String sql = "insert into users(id,name,password,email,birthday) values (4,'天山童老','123456','tstl@qq.com','2012-12-12')";int result = st.executeUpdate(sql);if(result>0){System.out.println("插入成功!!!!");}

2.update

Statement st = conn.createStatement();String sql = "update users set name='caocao1' where name='caocao'";int result = st.executeUpdate(sql);if(result>0){System.out.println("跟新成功!!!!");}


3.delete

Statement st = conn.createStatement();String sql = "delete from users where id = 4";int result = st.executeUpdate(sql);if(result>0){System.out.println("删除成功!!!!");}


4.read

Statement st = conn.createStatement();String sql = "select * from users";ResultSet result = st.executeQuery(sql);while(result.next()){//根据获取列的数据类型,分别调用rs的相应方法映射到java对象中}

二、使用JDBC对数据库操作

1.环境搭建:创建表users和插入数据

CREATE DATABASE jdbcdemo CHARACTER SET utf8 COLLATE utf8_general_ciCREATE TABLE users(id int PRIMARY KEY,name VARCHAR(40),password VARCHAR(40),email VARCHAR(60),birthday date );INSERT INTO users(id,name,password,email,birthday) VALUES(1,'zhangfei','123456','zf@sina.com','1987-2-18');INSERT INTO users(id,name,password,email,birthday) VALUES(2,'caocao','123456','cc@sina.com','1989-8-16');INSERT INTO users(id,name,password,email,birthday) VALUES(3,'libai','123456','lb@sina.com','1995-3-22');

2.创建JavaWeb工程,并导入MySql数据库驱动



3.创建db.properties文件


4.编写JdbcUtils工具类

import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;public class JdbcUtils {private static String url = null;private static String driver = null;private static String username = null;private static String password = null;static{InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");Properties properties = new Properties();try {properties.load(in);url = properties.getProperty("url");driver = properties.getProperty("driver");username = properties.getProperty("username");password = properties.getProperty("password");Class.forName(driver);} catch (Exception e) {e.printStackTrace();}finally {try {in.close();} catch (IOException e) {e.printStackTrace();}}}/* * 获取数据库连接对象 */public static Connection getConnection() throws SQLException{return DriverManager.getConnection(url,username,password);}/* *  要释放的资源包括Connection数据库连接对象,负责执行SQL命令的Statement对象,存储查询结果的ResultSet对象 */public static void release(Connection conn,Statement st,ResultSet rs){if(rs != null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(st!=null){try {st.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}

5.CURD操作

import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;public class JdbcDemo02 {public void insert(){Connection conn = null;Statement st = null;try{conn = JdbcUtils.getConnection();st = conn.createStatement();String sql = "insert into users(id,name,username,password,email,birthday) values(5,'唐明皇','123456','tmh@qq.com','2001-12-12')";int result = st.executeUpdate(sql);if(result>0){System.out.println("插入成功");}}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, null);}}public void delete(){Connection conn = null;Statement st = null;try{conn = JdbcUtils.getConnection();st = conn.createStatement();String sql = "delete ftom users where id = 5";int result = st.executeUpdate(sql);if(result>0){System.out.println("删除成功");}}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, null);}}public void update(){Connection conn = null;Statement st = null;try{conn = JdbcUtils.getConnection();st = conn.createStatement();String sql = "update users set name = '杨贵妃' where id = 5";int result = st.executeUpdate(sql);if(result>0){System.out.println("跟新成功");}}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, null);}}public void find(){Connection conn = null;Statement st = null;ResultSet rs = null;try{conn = JdbcUtils.getConnection();st = conn.createStatement();String sql = "select * from users where id = 5";    rs = st.executeQuery(sql);if(rs.next()){System.out.println(rs.getString("name"));}}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, rs);}}}

三、PreparedStatement对象简介

         PreperedStatement是Statement的子类,它的实例对象可以通过调用Connection.preparedStatement()方法获得,相对于Statement对象而言:PreperedStatement可以避免SQL注入的问题。
  Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement可对SQL进行预编译,从而提高数据库的执行效率。并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。


CURD操作

package com.hanxin;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;import java.util.Date;public class JdbcDemo3 {public void insert(){Connection conn = null;PreparedStatement st = null;try{conn = JdbcUtils.getConnection();String sql = "insert into users (id,name,password,email,birthday) values(?,?,?,?,?)";st = conn.prepareStatement(sql);st.setInt(1, 6);st.setString(2, "鲁迅");st.setString(3, "123456");st.setString(4, "lx@qq.com");st.setDate(5, new java.sql.Date(new Date().getTime()));int result = st.executeUpdate();if(result>0){System.out.println("插入成功");}}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, null);}}public void update(){Connection conn = null;PreparedStatement st = null;try{conn = JdbcUtils.getConnection();String sql = "update users set name=? where id = ?";st = conn.prepareStatement(sql);st.setString(1,"李大钊");st.setInt(2, 6);int result = st.executeUpdate();if(result>0){System.out.println("跟新成功");}}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, null);}}public void delete(){Connection conn = null;PreparedStatement st = null;try{conn = JdbcUtils.getConnection();String sql = "delete from users where id = ?";st = conn.prepareStatement(sql);st.setInt(1, 6);int result = st.executeUpdate();if(result>0){System.out.println("删除成功");}}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, null);}}public void find(){Connection conn = null;PreparedStatement st = null;ResultSet rs = null;try{conn = JdbcUtils.getConnection();String sql = "select * from users";st = conn.prepareStatement(sql);rs = st.executeQuery();while(rs.next()){System.out.println(rs.getString("name"));}}catch(Exception e){e.printStackTrace();}finally {JdbcUtils.release(conn, st, rs);}}}






阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 为什么医院不卖伊曲康唑 二手房卖不掉急死人 中国为什么不让卖爆炸盐 卖不卖 3d硬金为什么不按克卖 迈之灵为什么不让卖 宝塔糖为什么不让卖 为什么黄道益不能在大陆卖 40年产权公寓卖不掉 为什么处方药不随便卖 王氏保赤丸为啥不让卖 百蕊颗粒药店为什么不让卖 14楼为什么便宜也不好卖 为什么很多药店不卖百蕊颗粒 安康鱼肝为什么不让卖 eve药中国为什么不让卖 21型二踢脚为什么不能卖 凯美瑞混动为什么卖不动 顶层房子为什么不好卖 南宁2019很多房子卖不出去 十月馨药店为什么不明卖 三不问 养龟为什么不能养双 家里为什么不能养双猫 眼科医生不建议割双眼皮 新手为什么不要开双离合 千万不要买雷凌双擎 世上安得双法不负如来不负卿 肿泡眼大夫不建议割双眼皮 双胎为什么医生不建议做四维 双闪灯一直闪关不掉怎么解决 到付邮费是不是双倍 做完双眼皮不能吃什么 甲状腺双叶回声不均匀 不可抗力3完整免费观看双结局 双钱轮胎质量好不好 双相情感障碍六亲不认 为什么双氧水不利于伤口愈合 双氧水洗耳朵会不会烧坏耳膜 双桶洗衣机脱水桶不转 非你不爱双高干