JDBC链接本地MySQL数据库,创建表结构并添加数据和查询数据

首先我们要下载JDBC的jar包,本项目中jar放在了lib目录中,大家可以直接使用我这个mysql-connector-java-5.1.42-bin.jar包。

然后添加一个Main,使用JDBC链接MySQL数据库,创建表结构并添加数据和查询数据

具体代码:

public class Main{

    public static void main(String[] args) throws Exception {
        connectMySQLTest01();
        connectMySQLTest02();
        connectMySQLTest03();
    }

    //链接数据库,创建student表,并添加内容
    private static void connectMySQLTest01() throws SQLException {
        Connection conn = null;
        String sql;
        // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
        // 避免中文乱码要指定useUnicode和characterEncoding
        // 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
        // 下面语句之前就要先创建javademo数据库
        String url = "jdbc:mysql://localhost:3306/test?"
                + "user=root&password=123456&useUnicode=true&characterEncoding=UTF8";

        try {
            // 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,
            // 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以
            Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
            // or:
            // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
            // or:
            // new com.mysql.jdbc.Driver();

            System.out.println("成功加载MySQL驱动程序");
            // 一个Connection代表一个数据库连接
            conn = DriverManager.getConnection(url);
            // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
            Statement stmt = conn.createStatement();
            sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
            int result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功
            if (result != -1) {
                System.out.println("创建数据表成功");
                sql = "insert into student(NO,name) values('2012001','陶伟基')";
                result = stmt.executeUpdate(sql);
                sql = "insert into student(NO,name) values('2012002','周小俊')";
                result = stmt.executeUpdate(sql);
                sql = "select * from student";
                ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值
                System.out.println("学号\t姓名");
                while (rs.next()) {
                    System.out
                            .println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int类型可以用getInt()
                }
            }
        } catch (SQLException e) {
            System.out.println("MySQL操作错误");
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
        }
    }

    //链接数据库,查询数据库student表结构的内容
    private static void connectMySQLTest02() throws SQLException {
        Connection conn = null;
        String sql;
        // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
        // 避免中文乱码要指定useUnicode和characterEncoding
        // 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
        // 下面语句之前就要先创建javademo数据库
        String url = "jdbc:mysql://localhost:3306/test?"
                + "user=root&password=123456&useUnicode=true&characterEncoding=UTF8";

        try {
            // 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,
            // 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以
            Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
            // or:
            // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
            // or:
            // new com.mysql.jdbc.Driver();

            System.out.println("成功加载MySQL驱动程序");
            // 一个Connection代表一个数据库连接
            conn = DriverManager.getConnection(url);
            // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
            Statement stmt = conn.createStatement();
            sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
            //查询数据库student表结构数据
            sql = "select * from student";
            ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值
            System.out.println("学号\t姓名");
            while (rs.next()) {
                System.out
                        .println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int类型可以用getInt()
            }
        } catch (SQLException e) {
            System.out.println("MySQL操作错误");
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
        }
    }

    //封装一个DBHelper类来打开和关闭数据库
    private static void connectMySQLTest03() {

        String sql = "select * from student";//SQL语句
        DBHelper db1 = new DBHelper(sql);//创建DBHelper对象

        try {
            ResultSet ret = db1.pst.executeQuery();//执行语句,得到结果集
            while (ret.next()) {
                System.out
                        .println(ret.getString(1) + "\t" + ret.getString(2));// 入如果返回的是int类型可以用getInt()
            }
            ret.close();
            db1.close();//关闭连接
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
Cmd命令行窗口中,MySQL表中数据乱码问题

百度了一下。。有说将cmd字符编码用chcp命令改为65001(utf8字符编码),可这样之后根本无法输入中文,查询出的中问结果依旧乱码
其实,只要保证cmd客户端和MySQL两者编码一致即可。
但现实是cmd默认的是gbk(cmd属性可以看到中文操作系统下面是gbk编码),而mysql一般是utf8(我的也是),之前一直进入误区,想要更改cmd的字符编码,可是并不能行得通。网友中提到在mysql中关于客户端编码问题,只需在cmd里告诉mysql服务器我客户端这边编码和想要的结果集编码即可。

具体步骤:
1、win+r进入cmd,然后切到mysql安装目录的bin文件夹下(或者直接打开我的电脑找到bin文件夹,在上方地址栏输入cmd);

2、输入 mysql -uroot -p,然后按提示输入密码计入数据库;

3、设置编码;

此时输入 set character_set_client=gbk;告诉我客户端这边的文字编码
再输入set character_set_results=gbk; 告诉mysql希望返回的结果集编码;实验中发现只要客户端是gbk编码的,只要设置这个就可以解决乱码这个问题。

还有另外一个好用的命令可以同时达到上面两条指令的效果:

set charset gbk;//和上面两个效果一致。

大功告成!去插入中文字段试试吧!

项目地址:传送门

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值