栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java数据库(mysql)连接总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java数据库(mysql)连接总结

需要先导入此包

建表语句

create database jdbc;

create table users( id int PRIMARY key auto_increment, name
varchar(40), password varchar(40), email varchar(60), birthday DATE );

insert into users(name,password,email,birthday) values
(‘zs’,‘123456’,‘zs@sina.com’,‘1980-12-04’),
(‘lisi’,‘123456’,‘lisi@sina.com’,‘1980-12-04’),
(‘wangwu’,‘123456’,‘wangwu@sina.com’,‘1979-12-04’);



Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。需要注意的是,在编写JDBC程序时,必须要把所使用的数据库驱动程序或类库加载到项目的classpath中(这里指MySQL驱动JAR包)

DriverManager类用于加载JDBC驱动并且创建与数据库的连接。

Connection接口代表Java程序和数据库的连接,只有获得该连接对象后,才能访问数据库,并操作数据表。在Connection接口中,定义了一系列方法,其常用方法如下所示。

Statement接口用于执行静态的SQL语句,并返回一个结果对象。Statement接口对象可以通过Connection实例的createStatement()方法获得,该对象会把静态的SQL语句发送到数据库中编译执行,然后返回数据库的处理结果。在Statement接口中,提供了3个常用的执行SQL语句的方法,具体如下所示。



ResultSet接口用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。
在ResultSet接口内部有一个指向表格数据行的游标(或指针),ResultSet对象初始化时,游标在表格的第一行之前调用next()方法可将游标移动到下一行。如果下一行没有数据,则返回false。在应用程序中经常使用next()方法作为while循环的条件来迭代ResultSet结果集。ResultSet接口中的常用方法如下所示。

通常,JDBC的使用可以按照以下几个步骤进行:
(1)加载并注册数据库驱动。
(2)通过DriverManager获取数据库连接。
(3)通过Connection对象获取Statement对象。
(4)使用Statement执行SQL语句。
(5)操作ResultSet结果集。
(6)关闭连接,释放资源。

package Test;

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

public class test1 {
    public static void main(String[] args) throws Exception {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "123456");
            statement = connection.createStatement();
            resultSet = statement.executeQuery("select * from users");
            while (resultSet.next()) {
                System.out.println(resultSet.getInt("id") + ":" + resultSet.getString("name") + ":" + resultSet.getString("password") +
                        ":" + resultSet.getString("email") + ":" + resultSet.getDate("birthday"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            resultSet.close();
            statement.close();
            connection.close();
        }
    }
}

输出:

PreparedStatement对象可以对SQL语句进行预编译,预编译的信息会存储在该对象中。当相同的SQL语句再次执行时,程序会使用PreparedStatement对象中的数据,而不需要对SQL语句再次编译去查询数据库,这样就大大的提高了数据的访问效率。

package Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class test2 {
    public static void main(String[] args) throws Exception {
        Connection conn= null;
        PreparedStatement ps=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc",
                    "root","123456");
            String insert="insert into users(name,password,email,birthday) values" +
                    "(?,?,?,?)";
            ps=conn.prepareStatement(insert);
            ps.setString(1,"zl");
            ps.setString(2,"123456");
            ps.setString(3,"zl@sina.com");
            ps.setString(4,"1987-12-23");
            ps.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(ps!=null){
                ps.close();
            }
            if(conn!=null){
                conn.close();
            }
        }
    }
}

再次运行第一次的代码:

ResultSet主要用于存储结果集,可以通过next()方法由前向后逐个获取结果集中的数据,如果想获取结果集中任意位置的数据,则需要在创建Statement对象时,设置两个ResultSet定义的常量,具体设置方式如下:
Statement st = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENITIVE,
ResultSet.CONCUR_READ_ONLY
);
ResultSet rs = st.excuteQuery(sql);
在上述方式中,常量“Result.TYPE_SCROLL_INSENITIVE”表示结果集可滚动,常量“ResultSet.CONCUR_READ_ONLY”
表示以只读形式打开结果集。

package Test;

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

public class test3 {
    public static void main(String[] args) throws Exception {
        Connection conn=null;
        Statement statement=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc",
                    "root","123456");
            String sql="select * from users";
            statement=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            ResultSet rs=statement.executeQuery(sql);
            System.out.print("第二条数据为:");
            rs.absolute(2);
            System.out.println(rs.getString("name"));


            System.out.print("第一条数据为:");
            rs.beforeFirst();
            rs.next();
            System.out.println(rs.getString("name"));


            System.out.print("第四条数据为:");
            rs.afterLast();
            rs.previous();
            System.out.println(rs.getString("name"));
            System.out.println();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(statement!=null){
                statement.close();
            }
            if(conn!=null){
                conn.close();
            }
        }
    }
}

输出:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号