Java操作数据库实现"增删改查"

本文主要讲解JDBC操作数据库    主要实现对MySql数据库的"增删改查"

综合概述:

JDBC的常用类和接口

一   DriverManager类

DriverManage类用来管理数据库中的所有驱动程序,是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动之间建立连接,DriverManager类中的方法都是静态方法,下列是DriverManager的常用方法:

getConnection(String URL,String user,String PassWord) 指定3个参数,分别是连接地址,用户名 和密码 类连接数据库
setLoginTimeout()                                     获取驱动程序视图登陆到某一数据库可以等待的最长时间,以秒为单位,
Println(String message)                               将一条信息打印到当前JDBC日志流中

二  Connection 接口

COnnection 接口代表与特定的数据库的连接,要对数据库中的数据进行操作,首先要获取数据库连接,Connection实就像在应用程序与数据库之间开通了一条通道.可以通过DriverManager类的getConnection()方法获取Connection的实例.Connection接口的常用方法如下:

createStatement()  创建Statement对象

PrepareStatement()  创建预处理对象PrepareStatement

isReadOnly()        查看当前Connection对象的读取模式是否是只读形式

SetReadOnly()       设置当前Connection对象的读写模式,默认是非只读模式

close()            立即释放此Connection对象的数据库和JDBC资源,而不是自动释放

三   Statement   接口

Statement接口用于创建向数据库中传递SQL语句的对象, 常用方法如下:

execute(String sql)      执行静态的SELECT语句 可能返回多个数据集
executeQuery(String sql) 执行给定的Sql语句  返回单个ResultSet对象
clearBatch()             清空此Statement对象的当前SQL命令列表
executeUpdate()          执行指定的SQL语句 该语句可以为INSERT  UPDATE DELETE语句
close()                  释放Statement实例占用的数据库和JDBC资源

四  PreparedStatement 接口

PreparedStatement接口继承Statement,用于执行动态的SQL语句 ,通过PreparedStatement实例执行的SQL语句,将被编译并保存到PreparedStatement实例中,从而可以重复的执行该SQL语句 . preparedStatement接口的常用方法:

execute( )        在此PreparedStatement对象执行SQL语句,该语句可以是任何类型的SQL语句
executeQuery( )   在此preparedStatement对象中执行Sql查询语句,返回为查询数据集的对象
executeUpdate()   在此preparedStatement对象执行Sql语句,该SQL语句必须是一个INSERT UPDATE DELETE语句,或者是没有返回值得DLL语句setbyte(int Pindex byte by) 将参数Pindex位置上设置为给定的byte参数bysetString(int Pindex String str)将参数Pindex位置上设置为给定的String参数值strsetDouble(int pindex Double dou)将参数Pindex位置上设置为给定的Double参数值dousetInt(int Pindex int i) 将参数Pindex位置上设置为给定的int参数值isetObject(int PIndex Ocject  obj)将参数Pindex位置上设置为给定的Object参数值Obj

五 ResultSet 接口

ResultSet接口类似于一个临时的数据表,用来暂时存放数据库查询操作获取到的数据集  它的常用方法如下:

getint()  以int形式获取当前行指定的列
getFloat()  以Float形式获取当前行指定的列
getDate()   以Date形式获取当前行指定的列
getBoolean() 以Boolean形式获取当前行指定的列
getString()   以String形式获取当前行指定的列
getObject()   以Object形式获取当前行指定的列
next( )         将指针向下移一行
updateInt()   用int值更新指定列
updateFloat()用float值更新指定列
updateLong()  用指定的long值更新指定的列
updateString()用指定的"String"值更新指定列
updateObejct() 用object值更新指定的列
updatenull()  将指定的列值修改为null
updateDate()  用指定的Date值更新指定的列
updateDouble() 用指定的DOuble值更新指定的列

通过JDBC操作数据库

如果需要访问数据库,就必须加载数据库驱动,这个驱动只是在程序第一次运行的时候加载一次,下面将我们的连接Mysql数据库的连接器下载:链接:http://pan.baidu.com/s/1dE42McT 密码:emqo

1):新建一个项目,创建lib文件夹

2)把刚才下载的驱动放到这个文件里

3)点项目右键选择Build  Path 点Configure Build Path

选择Libraries   然后Add JARs  把lib文件下的驱动放进去.

下面就可以编写代码了;

首先创建一个DBHerpel类:代码如下:

package com.gr.DBHerpel;

import java.sql.*; //导包

/**
 * ClassName: DBHerpel
 * @Description: TODO 数据库辅助类
 * @author 情绪i
 */
public class DBHerpel {

    private static Connection Conn; // 数据库连接对象

    // 数据库连接地址
    private static String URL = "jdbc:mysql://localhost:3306/myschool?characterEncoding=utf8&useSSL=true";

    // 数据库的用户名
    private static String UserName = "root";
    // 数据库的密码
    private static String Password = "1234";

    /**
     * * @Description: TODO 获取访问数据库的Connection对象
     * @param @return
     * @return Connection 连接数据的对象
     * @author 情绪i
     */
    public static Connection getConnection() {

        try {

            Class.forName("com.mysql.jdbc.Driver"); // 加载驱动

            System.out.println("加载驱动成功!!!");
        } catch (ClassNotFoundException e) {
            // TODO: handle exception
            e.printStackTrace();
        }

        try {

            //通过DriverManager类的getConenction方法指定三个参数,连接数据库
            Conn = DriverManager.getConnection(URL, UserName, Password);
            System.out.println("连接数据库成功!!!");

            //返回连接对象
            return Conn;

        } catch (SQLException e) {
            // TODO: handle exception
            e.printStackTrace();
            return null;
        }
    }

}

这里连接的是我MySchool的数据库   数据库的表结构如下:

数据表里有user pwd 两个字段;下面通过一个案例实现查询:

"查"

代码如下:

package com.gr.visitServer;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.gr.DBHerpel.DBHerpel;

public class VisitMySql {

    // 连接对象
    private Connection conn;
    // 传递sql语句
    private Statement stt;
    // 结果集
    private ResultSet set;

    // 查询
    public void Select() {
        try {
            // 获取连接
            conn = DBHerpel.getConnection();
            if (conn == null)
                return;
            // 定义sql语句
            String Sql = "select * from login";
            // 执行sql语句
            stt = conn.createStatement();
            // 返回结果集
            set = stt.executeQuery(Sql);
            // 获取数据
            while (set.next()) {

                System.out.println("用户名:" + set.getString(1) + "\t密码:"
                        + set.getString(2));

            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {

            // 释放资源
            try {
                set.close();
                conn.close();
            } catch (Exception e2) {
                // TODO: handle exception
            }

        }
    }

}

然后新建一个包Test编写Test类代码如下:

package com.gr.Test;

import com.gr.visitServer.VisitMySql;

public class Test {
    public static void main(String[] args){

        //实例化对象
        VisitMySql vs = new VisitMySql();
       //调用查询方法
        vs.Select();

    }

}

上面的代码是查询数据库Login表里的用户的账号和密码,用Connection接口的createStatement()方法获得Statement对象传递Sql语句,用它的ExecuteQuery()方法获取单个ResultSet对象.

下面向数据库添加数据:

"增"

在VisitMySql类中添加Add方法:代码如下:

// 使用Statement接口的executeUpdate()方法向数据库添加数据
    public void Add(){

        try {
            //获取连接
            conn = DBHerpel.getConnection();
            if(conn==null)
            return;
            //获取用户输入的账号和密码
            Scanner input = new Scanner(System.in);
            System.out.print("请输入用户名:");
            int user = input.nextInt();
            System.out.print("请输入密码:");
            String pwd = input.next();
            //定义sql语句
            String sql = "insert into login values("+user+" , ‘"+pwd+"‘);";
            //获取Statement对象
            stt = conn.createStatement();
            //执行sql语句
            stt.executeUpdate(sql);

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            //释放资源
            try {

                conn.close();

            } catch (Exception e2) {}

        }

    }

同样也是获取Connection接口的createStatement()方法获取Statement的对象,用Statement对象的executeUpdate()方法来执行INSERT语句,最后在Test类调用Add()方法

下面使用PreparedStatement接口中的executeUpdate()方法来执行INSERT语句,

// 使用PreparedStatement接口的executeUpdate()方法向数据库添加一条数据
    public void Add2() {

        try {
            // 获取连接
            conn = DBHerpel.getConnection();
            if (conn == null)
                return;

            // 获取用户输入
            System.out.print("请输入用户名:");
            Scanner input = new Scanner(System.in);
            int user = input.nextInt();
            System.out.print("请输入密码:");
            String pwd = input.next();

            // 定义sql语句
            String AddSQL = "INSERT INTO login VALUES (?,?);";

            // 创建一个Statement对象
            PreparedStatement ps = conn.prepareStatement(AddSQL);

            //向sql语句的第一个问号添加数据
            ps.setInt(1, user);
            //向sql语句的第二个问号添加数据
            ps.setString(2,pwd);
            // 执行sql语句
            ps.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();

            } catch (Exception e2) {
                // TODO: handle exception
            }

        }
    }

最后在Test类测试Add2()方法,,这里Sql语句中用两个问号代表要添加的用户名和密码,根据上面PreparedStatement接口的常用方法,setint()  setString()  方法来指定添加的数据.

"删"

删除数据也是很常用的技术,同样可以使用Statement接口中的executeUpdate()方法来实现  代码如下:

//使用Statement接口的executeUpdate()方法实现从数据库删除数据
    public void Delete(){
        try {

            //获取连接
            conn = DBHerpel.getConnection();
            if(conn==null)
            return;

            //提示用户输入要删除的用户
            System.out.print("请输入删除的用户:");
            Scanner input = new Scanner(System.in);
            int user = input.nextInt();

            //定义sql语句
            String deleteSql = "DELETE FROM login WHERE user="+user+";";
            //获取Statement对象
            stt = conn.createStatement();
            //执行sql语句
            stt.executeUpdate(deleteSql);

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            //释放资源
            try {
                conn.close();

            } catch (Exception e2) {}

        }
    }
    

"改"

对数据的修改也是日常代码中常见的技术.  可以使用Statement接口中executeUpdate()方法来实现,也可以用PreparedStatement接口的executeUpdate()方法来实现 具体代码如下:

//使用PreparedStatement接口中的executeUpdate()方法实现修改数据
    public void Update(){

        try {
            //获取连接
            conn = DBHerpel.getConnection();
            if(conn==null)
                return;

            //用户输入要修改的账户
            System.out.print("请输入用户名:");
            Scanner input = new Scanner(System.in);
            int user = input.nextInt();       //提示用户输入新的密码
            System.out.print("请输入新的密码:");
            String NewPwd = input.next();
            //定义Sql语句
            String UpdateSql = "UPDATE login SET pwd = ‘"+NewPwd+"‘ WHERE user = "+user+";";
            //创建Statement对象
            PreparedStatement ps = conn.prepareStatement(UpdateSql);
            //执行sql语句
            ps.executeUpdate();
        } catch (SQLException e) {

            e.printStackTrace();
        }finally{
            //释放资源
            try {
                conn.close();
            } catch (Exception e2) {}

        }
    }

以上是对Mysql数据库的"增删改查"功能的具体实现,

时间: 2024-12-04 18:16:09

Java操作数据库实现"增删改查"的相关文章

django-13.操作数据库(增删改查)

django的models模块里面可以新增一张表和字段,通常页面上的数据操作都来源于数据库的增删改查,django如何对msyql数据库增删改查操作呢?本篇详细讲解django操作mysql数据库 新增数据 接着前面数据库User表创建成功后,如果我们在页面上注册用户的话,就需要在User表新增一条数据比如,我们想在User表插入一组数据 user_name=yoyo5, psw=555555 在urls.py同一目录(helloworld/helloworld/testdb.py)新建一个te

Java数据库连接——JDBC基础知识(操作数据库:增删改查)

一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库.比如建立数据库连接.执行SQL语句进行数据的存取操作. JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数据库 创

C#通过窗体应用程序操作数据库(增删改查)

为了体现面向对象的思想,我们把"增删改查"这些函数封装到一个数据库操作类里:   为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据. 首先,建立程序的主窗体 ㈠添加数据 当点击"增加",弹出一个子窗体,通过子窗体往数据库中添加一条数据 private void button1_Click(object sender, EventArgs e) { Form5 insert= new Form5();

MySQL学习——操作数据库(增删改查)(一)

数据库是长期存储在计算机内,有组织的和可共享的数据集合,简而言之,数据库就是一个存储数据的地方,只是在其存储方式有特定的规律,这样做可以方便处理数据,数据库的操作包括创建数据库和删除数据库,还有数据库中的查询与修改,这些操作都是数据库管理的基础. 一,创建数据库 创建数据库是指在数据库系统中划分一块空间,用来存储相应的数据,这是进行表操作的基础,也是进行数据库管理的基础,在mysql中创建数据库需要通过SQL语句CREATE DATABASES实现,语法形式如下: CREATE DATABASE

【Hibernate】Hibernate的在Eclipse+Mysql的配置、安装,纯Java,利用Annotation与HQL完成数据库的增删改查

这篇文章有很多槽点,在Hibernate4.x上面用着Hibernate3.x的写法去写.而且程序中放到Eclipse中会有一大堆警告,但是这好歹也在一定程度上完成了Hibernate的入门.毕竟现在很多介绍Hibernate的书籍都是用Hibernate3.x的写法去写.上次那篇<[Hibernate]最简单的Hibernate工程--账号注册系统>(点击打开链接)杂糅Struts的技术其实是不对的.因为Hibernate完成的是,从Java到数据库,从数据库到Java的任务.之后Java与

java jdbc 连接mysql数据库 实现增删改查

好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的

java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)

1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":&qu

【Mysql】Java中对Mysql数据库的增删改查、Java的System类

这部分也是所谓JDBC.网站数据源的内容,把名字弄得很高深似得,实际上只是Java中对Mysql数据库的增删改查的内容.非常简单,之前写了这么多Mysql的内容,没好好总结一下,实在是不应该.今天就实现一个Java中对Mysql数据库的增删改查,随便带点Java取出当前系统的系统名与系统时间的知识,完成一个还算有点意思的小例子. 一.基本目标 首先,在Mysql数据库中有一张名为testtable的空表,id为自增列,username,class都是文本列,但是class里面都存放数字,也就是整

使用MyEclipse对MongoDB数据库 进行增删改查操作

前面写了一篇MongoDB的下载与安装,接下来此篇写的是MongoDB数据库在JAVA程序中的基本功能: 使用MyEclipse对MongoDB数据库进行增删改查操作 1.导入JAR包 使用了Spring3.0:此类包,可以上网查询"MongoDB相关JAR包" 2.创建一个Person实体类 源代码如下: public class Person(){ //属性 Private String id; //id Private String name; //name Private in