第一种比较low:用了statment,没有用preparedstatement。另外,插入时,不灵活,不能调用参数,但是如果直接给函数形参的话就会被SQL注入攻击,所以,最好在sql语句中使用?代表要引进的参数。

工具类(DBUtil类):用来连接和关闭数据库

 package JDBC;

 /**
* Created by Administrator on 2018/3/8 0008.
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class DBUtil {
public static final String url="jdbc:mysql://127.0.0.1/bz?useSSL=false";
public static final String username="root";
public static final String password="root";
public static final String driver="com.mysql.jdbc.Driver";
public static Connection DBcon(){
Connection con=null;
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
con= DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
} public static void close(ResultSet rs,Statement stat,Connection conn){ try {
if(stat!=null)
stat.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(conn!=null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(rs!=null)
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

测试类(Test类):其中有增删改查的功能,在测试类中写下sql语句,进行测试

 package JDBC;

 /**
* Created by Administrator on 2018/3/8 0008.
*/
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
public static Connection conn=null;
public static Statement stat=null;
public static ResultSet rs=null;
public static void main(String[] args){
String select="select * from father;";
String insert="insert into father values(null,'POP');";
String update="update father set f_name='haha' where f_name='POP';";
String delete="delete from father where f_name='haha';";
conn=DBUtil.DBcon();
select(select);
insert(insert);
select(select);
update(update);
select(select);
delete(delete);
select(select);
DBUtil.close(rs,stat, conn);
}
public static void select(String quary){
try {
stat=conn.createStatement();
rs=stat.executeQuery(quary);
while(rs.next()){
System.out.println(rs.getObject("fid")+"|"+rs.getObject("f_name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void insert(String quary){
try {
stat=conn.createStatement();
int i=stat.executeUpdate(quary);
System.out.println("插入"+i+"行");
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void delete(String quary){
try {
stat=conn.createStatement();
int i=stat.executeUpdate(quary);
System.out.println("删除了"+i+"行");
} catch (SQLException e) {
e.printStackTrace();
} }
public static void update(String quary){
try {
stat=conn.createStatement();
int i=stat.executeUpdate(quary);
System.out.println("更改"+i+"行");
} catch (SQLException e) {
e.printStackTrace();
}
}
}

第二种解决了第一种low方法的问题,并且还新增了方法调用和过程调用:使用了CallableStatement类

package com.weikun.jdbc;

import jdk.internal.org.objectweb.asm.Type;
import org.junit.Test; import java.sql.*; /**
* Created by Administrator on 2018/3/12 0012.
*/
public class C {
@Test
public void testFun(){
Connection conn = null;
CallableStatement cs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bz?useUnicode=true&charactorCoding=UTF-8&useSSL=false", "root", "root");
cs=conn.prepareCall("{?=call f_1(?)}");
cs.registerOutParameter(1, Type.DOUBLE);
cs.setDouble(2,0.3); cs.execute();
System.out.println(cs.getObject(1));
}catch(Exception e){
e.printStackTrace();
}
} @Test
public void testProd(){
Connection conn = null;
CallableStatement cs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bz?useUnicode=true&charactorCoding=UTF-8&useSSL=false", "root", "root");
cs=conn.prepareCall("call p_1(?,?,?,?);");
cs.setInt(1,20005);
cs.setBoolean(2,true);
cs.setDouble(3,0.2);
cs.registerOutParameter(4, Types.FLOAT);
cs.execute();//返回的是第一个返回参数是不是个结果集,是的话返回1,不是的话返回0
System.out.println(cs.getObject(4));
}catch (Exception e){
e.printStackTrace();
}finally {
if(cs!=null){
try {
cs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} @Test
public void add() {
Connection connection = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bz?useUnicode=true&charactorCoding=UTF-8&useSSL=false", "root", "root");
ps=connection.prepareStatement("insert into e(v_name,v_salary) values(?,?)");
ps.setString(1,"jack");
ps.setDouble(2,3000);
System.out.println(ps.executeUpdate());
}catch (Exception e){
e.printStackTrace();
}finally {
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} @Test
public void del(){
Connection connection = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bz?useUnicode=true&charactorCoding=UTF-8&useSSL=false", "root", "root");
ps=connection.prepareStatement("DELETE from e where v_id=?");
ps.setInt(1,2);
System.out.println(ps.executeUpdate());
}catch (Exception e){
e.printStackTrace();
}finally {
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} @Test
public void update(){
Connection connection = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bz?useUnicode=true&charactorCoding=UTF-8&useSSL=false", "root", "root");
ps=connection.prepareStatement("UPDATE e SET v_name=? WHERE v_id=?");
ps.setString(1,"jack");
ps.setInt(2,1);
System.out.println(ps.executeUpdate());
}catch (Exception e){
e.printStackTrace();
}finally {
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} @Test
public void quaryCon(){
Connection connection=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bz?useUnicode=true&charactorCoding=UTF-8&useSSL=false","root","root");
ps=connection.prepareStatement("select * from products where prod_price>? and vend_id=?");
ps.setDouble(1,15.0);
ps.setInt(2,1003);
rs=ps.executeQuery();
while (rs.next()){
System.out.println(rs.getString("prod_name"));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} @Test
public void quaryAll(){ //查询所有结果集,打印其中的某几列
Connection connection=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
Class.forName("com.mysql.jdbc.Driver");//1、加载驱动
connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bz?useUnicode=true&charactorCoding=UTF-8&useSSL=false","root","root");
ps=connection.prepareStatement("select * from products");//尽量只用prepared态不使用Statment
rs=ps.executeQuery();//返回一个结果集
while(rs.next()){
System.out.println(rs.getObject("prod_id"));//从结果集中取出列名为prod_id的数据。
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} }
}

JDBC连接mysql增删改查整体代码的更多相关文章

  1. mysql数据库的连接以及增删改查Java代码实现(转载)

    每天叫醒自己的不是闹钟,而是梦想 数据库: create table t1(id int primary key not null auto_increment,name varchar(32),pa ...

  2. java 连接mysql增删改查

    1.创建mysql测试表 2.按下图创建3个文件夹与3个类 3.三个类的代码 PersionDao :目录(Data Access Object), 数据访问对象是第一个面向对象的数据库接口 pack ...

  3. MySQL—增删改查,分组,连表,limit,union,alter,排序,去重

    MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert ...

  4. mysql增删改查相关操作

    mysql增删改查相关操作 以前用mysql用的少,对于数据库相关的操作不熟悉,现在开始要接触数据库了,记录一下相关的基础操作吧. 1.数据库的授权操作 # mysql -u root -p Ente ...

  5. 基于gin的golang web开发:mysql增删改查

    Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...

  6. mvc模式jsp+servel+jdbc oracle基本增删改查demo

    mvc模式jsp+servel+jdbc oracle基本增删改查demo 下载地址

  7. PHP MySql增删改查

    mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?p ...

  8. mysql增删改查练习

    Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create dat ...

  9. Django学习之mysql增删改查

    上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通 ...

随机推荐

  1. 屌丝、小白怎么拿国内巨头offer

    不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕仰慕.看看这些牛人,NOI金牌.开源社区名人,三年级開始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技 ...

  2. JAVA项目中公布WebService服务——简单实例

    1.在Java项目中公布一个WebService服务: 怎样公布? --JDK1.6中JAX-WS规范定义了怎样公布一个WebService服务. (1)用jdk1.6.0_21以后的版本号公布. ( ...

  3. 杂项-快捷键:Google浏览器常用快捷键

    ylbtech-杂项-快捷键:Google浏览器常用快捷键 1.返回顶部 1. Google浏览器,是一个由Google(谷歌)公司开发的开放原始码网页浏览器.该浏览器是基于其他开放原始码软件所撰写, ...

  4. HTML5学习笔记(四):关于表格

    在一个实例中碰到表格,总结下,先上代码,例: <table border="1"> <thead> <th>表头</th> < ...

  5. js最简单的-点击小图放大

    js最简单的-点击小图放大 标签(空格分隔): js <html> <body> <img class="imgview" src="{$v ...

  6. 项目中解决实际问题的代码片段-javascript方法,Vue方法(长期更新)

    总结项目用到的一些处理方法,用来解决数据处理的一些实际问题,所有方法都可以放在一个公共工具方法里面,实现不限ES5,ES6还有些Vue处理的方法. 都是项目中来的,有代码跟图片展示,长期更新. 1.获 ...

  7. 五年磨一剑:Java 开源博客 Solo 1.0.0 发布了!

    从 Solo 第一个版本发布至今,已经过去 5 年了.今天我们非常自豪地宣布,Solo 1.0.0 正式发布,感谢一直以来关注 B3log 开源的朋友! 目前 B3log 开源有三款产品: GitHu ...

  8. 子线程创建AlertDialog错误

    Can't create handler inside thread that has not called Looper.prepare()

  9. WCF(三)IIS寄宿

    WCF常用的一种使用方式是寄宿在IIS中. IIS寄宿操作流程如下: 1.创建IIS物理路径对应的文件夹,文件夹名称是WCFIIS. 2.在WCFIIS文件夹中添加文本文件,在文本文件中写入<% ...

  10. 用私有构造器或枚举类型强化Singleton

    Singleton指只有一个实例的类,只能被创建一次. 在Java1.5之前实现Singleton有两种方式,都是将构造器设为private并导出公有的静态成员实例. 第一种方式将公有的静态成员实例设 ...