首先我们要下载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;//和上面两个效果一致。
大功告成!去插入中文字段试试吧!
项目地址:传送门