Mac安装Mysql_解决中文乱码_JDBC访问操作

来源:互联网 发布:查日本经济数据的网站 编辑:程序博客网 时间:2024/05/16 17:29

参考

http://www.runoob.com/mysql/mysql-install.html

http://blog.csdn.net/u010281209/article/details/53965409

1-安装

mac-mysql下载地址:http://dev.mysql.com/downloads/mysql/

 

密码要记下来,没有记录的话,可以在系统“通知”里面找到。

默认安装在/usr/local/mysql中

修改环境变量

vi ~/.bash_profile

export PATH=${PATH}:/usr/local/mysql/bin

source ~/.bash_profile

系统偏好设置中启动mysql



或者通过命令启动

mysqld_safe &

修改密码为root:mysqladmin  -u root -p password "root"

测试登录:mysql -u root -p 

关闭mysql

mysqladmin -u root -p shutdownEnter password: ******
或者在系统偏好设置中关闭


2-解决中文乱码

修改mysql编码为utf-8,解决中文乱码问题

默认的字符设置为:


(1)通过修改临时的编码解决(治标不治本的办法):http://www.cnblogs.com/mojita/p/5347614.html

设置上面的集中编码格式

一个一个设置

set character_set_client=utf8;

就是上面这个命令,把character_set_client这个换成想要更改的就好了。

简单介绍下:

character_set_client:客户端字符集
character_set_connection:链接字符集
character_set_database:数据库字符集
character_set_filesystem:文件系统
character_set_results:结果字符集
character_set_server:服务器字符集
character_set_system:mysql系统字符集

如果上面这种办法麻烦,可以使用

set names utf8;

这个命令同时将客户端字符集,链接字符集,结果字符集设置成utf8的字符编码。

但是上面这种办法当mysql下次登录的时候还会变成原来的默认设置,只是暂时的改变当前的字符编码!

(2)设置mysql配置文件永久生效

/etc目录下自己建了一个my.cnf文件(需要最高权限,使用sudo su),然后写入内容:

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8

保存,修改。关掉重启mysql

重新查看字符集:show variables like '%char%';


3-基本应用

http://www.runoob.com/mysql/mysql-administration.html

默认的数据库

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)

创建数据库

mysql> create database dbtest_1;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| dbtest_1 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)

使用数据库

mysql> use dbtest_1
Database changed
mysql> show tables;
Empty set (0.00 sec)

建表

mysql> CREATE TABLE IF NOT EXISTS `tb_test_1`(
-> `city_id` VARCHAR(10) default '',
-> `city_name` VARCHAR(100) default '',
-> PRIMARY KEY ( `city_id` )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.02 sec)

展示表

mysql> show tables;
+--------------------+
| Tables_in_dbtest_1 |
+--------------------+
| tb_test_1 |
+--------------------+
1 row in set (0.00 sec)

插入数据

mysql> insert into tb_test_1 (`city_id`,`city_name`)
-> values
-> ('110100','北京'),
-> ('120100','天津'),
-> ('130101','石家庄'),
-> ('130201','唐山'),
-> ('130301','秦皇岛'),
-> ('130701','张家口'),
-> ('130801','承德'),
-> ('131001','廊坊');
Query OK, 8 rows affected (0.00 sec)
Records: 8 Duplicates: 0 Warnings: 0

查看数据表内容

mysql> select * from tb_test_1;
+---------+-----------+
| city_id | city_name |
+---------+-----------+
| 110100 | 北京 |
| 120100 | 天津 |
| 130101 | 石家庄 |
| 130201 | 唐山 |
| 130301 | 秦皇岛 |
| 130701 | 张家口 |
| 130801 | 承德 |
| 131001 | 廊坊 |
+---------+-----------+
8 rows in set (0.00 sec)

4-JDBC访问操作

import java.sql.*;/** * 参考:https://www.cnblogs.com/taoweiji/archive/2012/12/11/2812852.html */public class MainApp {  public static void main(String[] args) throws SQLException {    Connection conn = null;    // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值    // 避免中文乱码要指定useUnicode和characterEncoding    // 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,    // 下面语句之前就要先创建dbtest_1数据库    String url = "jdbc:mysql://localhost:3306/dbtest_1?"      + "user=root&password=root&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();      String sql = "select * from tb_test_1";      ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值      System.out.println("城市id\t城市名称");      while (rs.next()) {        // 如果返回的是int类型可以用getInt()        System.out.println(rs.getString(1) + "\t" + rs.getString(2));      }    } catch (SQLException e) {      System.out.println("MySQL操作错误");      e.printStackTrace();    } catch (Exception e) {      e.printStackTrace();    } finally {      conn.close();    }  }}//==输出// 成功加载MySQL驱动程序//  城市id城市名称//  110100北京//  120100天津//  130101石家庄//  130201唐山//  130301秦皇岛//  130701张家口//  130801承德//  131001廊坊