JDBC链接本地MySQL数据库,创建表结构并添加数据和查询数据
2017-06-24 17:32
387 查看
首先我们要下载JDBC的jar包,本项目中jar放在了lib目录中,大家可以直接使用我这个mysql-connector-java-5.1.42-bin.jar包。
然后添加一个Main,使用JDBC链接MySQL数据库,创建表结构并添加数据和查询数据
具体代码:
其实,只要保证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;//和上面两个效果一致。
大功告成!去插入中文字段试试吧!
项目地址:传送门
然后添加一个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;//和上面两个效果一致。
大功告成!去插入中文字段试试吧!
项目地址:传送门
相关文章推荐
- 转:oracle 子查询创建表,表的重命名,给表和列添加注释,显示当前用户所有表,复制已存在表结构到新表
- 判断本地系统目录下是否存在XML文件,如果不存在就创建一个XMl文件,若存在就在里面执行添加数据
- JDBC连接mysql数据库,添加数据
- angularjs控制器的创建 添加数据 删除数据 查询数据
- 02-JDBC连接MySQL数据库【查询数据】
- Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)
- JDBC 数据库连接 创建表格、插入、查询、删除、修改数据 基本操作
- jdbc链接mysql数据库,并查询
- 用代码操作mysql数据库(添加和查询数据功能)
- 分别使用PreparedStatement和Statement对mysql数据库进行创建表,增加数据,查询数据和删除数据过程
- 表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询) 1.Oracle表的管理
- Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)
- 在mysql数据库中遇到的数据访问异常:GenericJDBCException:数据包查询太大(1211 > 1024)
- 使用Python创建MySQL数据库实现字段动态添加以及动态的插入数据
- ASP.NET 查询数据处理后动态创建DataTable并添加数据,绑定Repeater
- 使用 JdbcTemplate 动态创建表并添加数据 动态连表查询
- oracle 创建表和复制表,复制表结构,复制表数据 查询前N行
- Java JDBC操作Image类型数据 添加和查询
- 数据结构(第二天)单链表的基本操作,创建单链表,头插法,尾插法,删除节点,查询节点
- java项目中使用JDBC连接mysql数据库查询数据