前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDBC数据库的增删改查简单操作

JDBC数据库的增删改查简单操作

作者头像
HcodeBlogger
发布2020-07-14 10:09:34
1.1K0
发布2020-07-14 10:09:34
举报
文章被收录于专栏:Hcode网站Hcode网站

前言

本次带来的是JAVA的JDBC操作,对数据库进行发送SQL语句,以达到对数据库语言的增删改查操作 需要下载驱动类包 MySQL数据库的JDBC驱动包 https://dev.mysql.com/downloads/connector/j/ SQL Server数据库的JDBC驱动包 https://www.microsoft.com/en-us/download/details.aspx?id=55539

具体步骤

①用反射机制加载驱动类 ②利用TCP对数据库进行连接 ③执行相应的SQL语句 ④关闭连接资源

数据库的操作

添加,删除,更新操作 操作基本差不多
代码语言:javascript
复制
package cn. Himit_ZH. JDBC

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * 
* @ClassName: Demo03
* @Description: JDBC的增删改操作
* @author Himit_ZH
* @date 2020年2月27日
*
 */
public class Demo03 {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        String DbName = "test";//数据库名字
        String Dbusername = "root";//数据库登陆用户名 默认为root
        String Dbpwd = "123456";//数据库登陆密码
        try {
            //1、加载驱动类
            Class.forName("com.mysql.jdbc.Driver");
            //2、建立连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+DbName,Dbusername,Dbpwd);
            //3、设置SQL语句  ?为占位符 不直接书写实际参数 可以防止SQL注入
            String sql1 ="insert into t_user (username,pwd,age) values (?,?,?)"; //插入数据
            String sql2 ="delete from t_user where username=?'";  // 删除数据
            String sql3 ="update t_user set pwd=? where username=?"; // 修改数据
            //创建预处理对象,用statement不安全,会被SQL注入
            ps = conn.prepareStatement(sql1);
            //可以使用setObject方法处理参数
            ps.setObject(1, "Himit_ZH");
            ps.setObject(2, 234567);
            ps.setObject(3, 18);
            // 传日期 ps.setObject(4, new java.sql.Date(System.currentTimeMillis()));
            // 也可以用setString setInt 等等具体的数据类型
            //ps.setString(1, "Himit_ZH");
            //执行操作,往数据库发SQL语句,Boolean类型
            //boolean f =ps.execute();
            //对应DML语句和DDL语句可以用,返回的是影响数据的条数,int类型
            int count = ps.executeUpdate();
            System.out.println(count);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            //4、关闭资源
            try {
                if(ps!=null){
                    ps.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if(conn!=null){
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
查询操作
代码语言:javascript
复制
package cn. Himit_ZH. JDBC

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * 
* @ClassName: Demo03
* @Description: JDBC的查询操作
* @author Himit_ZH
* @date 2020年2月27日
*
 */
public class Demo03 {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs =null;
        String DbName = "test";//数据库名字
        String Dbusername = "root";//数据库登陆用户名 默认为root
        String Dbpwd = "123456";//数据库登陆密码
        try {
            //加载驱动类
            Class.forName("com.mysql.jdbc.Driver");
            //建立连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+DbName,Dbusername,Dbpwd);
            //设置SQL语句  ?为占位符 不直接书写实际参数 可以防止SQL注入
            String sql = "select id,username,pwd from t_user where id>?";  //?占位符
            ps = conn.prepareStatement(sql);
            ps.setObject(1, 2);  //把id大于2的记录都取出来
            rs = ps.executeQuery();//將查詢到的結果集儲存起來
            while(rs.next()){
                System.out.println(rs.getInt(1)+"---"+rs.getString(2)+"---"+rs.getString(3));
                //System.out.println(rs.getInt("id")+"---"+rs.getString("username")+"---"+rs.getString("pwd")); 
                //可以索引 也可列名
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            //关闭资源
            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();
            }
        }
    }
}
CLOB文本大对象的使用
代码语言:javascript
复制
package cn. Himit_ZH. JDBC

import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


/**
 * 
* @ClassName: Demo09
* @Description: 测试CLOB  文本大对象的使用(纯文本文件)
* @author Himit_ZH
* @date 2020年2月27日
*
 */
public class Demo09 {


    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        Reader r  = null;
        try {
            //加载驱动类
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");

//          ps = conn.prepareStatement("insert into t_user (username,myInfo) values (?,?) ");
//          ps.setString(1, "Himit_ZH");
//          ps.setClob(2, new FileReader(new File("c:/a.txt")));  //将文本文件内容直接输入到数据库中
            //将程序中的字符串输入到数据库的CLOB字段中
//          ps.setClob(2, new BufferedReader(new InputStreamReader(new ByteArrayInputStream("aaaaa".getBytes()))));

            ps = conn.prepareStatement("select * from t_user where id=?");
            ps.setObject(1, 101024);

            rs = ps.executeQuery();
            while(rs.next()){
                Clob c = rs.getClob("myInfo");
                r  = c.getCharacterStream();
                /*
                 * char [] buff = new char[1024]; r.read(buff);
                 * System.out.println(buff.toString());
                 */
                int temp = 0;
                while((temp=r.read())!=-1){
                    System.out.print((char)temp);
                }
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if(r!=null){
                    r.close();
                }
            } catch (Exception 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();
            }
        }
    }
}
BLOB 二进制大对象的使用
代码语言:javascript
复制
package cn. Himit_ZH. JDBC

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;



/**
 * 
* @ClassName: Demo10
* @Description: 测试BLOB  二进制大对象的使用 (图片 视频资源大的文件)
* @author Himit_ZH
* @date 2020年2月27日
*
 */
public class Demo10 {


    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        InputStream is  = null;
        OutputStream os = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","123456");

//          ps = conn.prepareStatement("insert into t_user (username,headImg) values (?,?) ");
//          ps.setString(1, "Himit_ZH");
//          ps.setBlob(2, new FileInputStream("c:/icon.jpg"));
//          ps.execute();


            ps = conn.prepareStatement("select * from t_user where id=?");
            ps.setObject(1, 101);

            rs = ps.executeQuery();
            while(rs.next()){
                Blob b = rs.getBlob("headImg");
                is  = b.getBinaryStream();
                os = new FileOutputStream("c:/a.jpg");
                int temp = 0;
                while((temp=is.read())!=-1){
                    os.write(temp);
                }
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if(is!=null){
                    is.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                if(os!=null){
                    os.close();
                }
            } catch (Exception 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();
            }
        }
    }
}

MySql和SqlServer操作的区别

具体在驱动类和连接有区别 Mysql的是这样

代码语言:javascript
复制
//1、加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//2、建立连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+DbName,Dbusername,Dbpwd);

而SQLserver的是这样

代码语言:javascript
复制
//1、加载驱动类
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2、建立连接
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName="+DbName,Dbusername,Dbpwd);

至于其他数据库大同小异,可自行搜索

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年4月3日 2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 具体步骤
  • 数据库的操作
    • 添加,删除,更新操作 操作基本差不多
      • 查询操作
        • CLOB文本大对象的使用
          • BLOB 二进制大对象的使用
          • MySql和SqlServer操作的区别
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档