+ -
当前位置:首页 → 问答吧 → mysql 数据库路径更改问题

mysql 数据库路径更改问题

时间:2008-02-20

来源:互联网

以下为本人学习java使用数据库系统mysql的过程,希望对初学java的同学有所帮助,不足请指出!
一. mysql的安装和配置
1.打开新立得软件管理器,以“mysql”关键字搜索,在搜索结果中选择 mysql-client-5.0,mysql-server-5.0,
mysql-admin,mysql-query-browser,点应用安装便完成了。
2.修改字符集:

代码:
sudo gedit /ect/mysql/my.cnf

找到代码
代码:
[client]

和代码
代码:
[mysqld]

分别在其下方加入如下代码后保存,这是为了解决mysql中文乱码问题。
代码:
default-character-set=utf8

3.添加新的数据库和用户
进入数据库
代码:
mysql -h localhost -u root -p
Enter password:

注意:要求输入的密码为系统管理员密码
建立新数据库

代码:
create database if not exists my_database default charset utf8 COLLATE utf8_general_ci;

my_database为你所要创建的数据库的名称,注意在创建此数据库的时候使用的字符集为utf8,通过“default charset utf8 COLLATE utf8_general_ci”,这样就使得在此数据库下创建的表的编码格式都是utf8,与第二步中的修改一致,在用java连接使用时不会出现中文乱码。
查看新建立的数据库
代码:
show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| my_database        |
| mydb               |
| mysql              |
+--------------------+
4 rows in set (0.00 sec)


可以看见建立的数据库已经在其中了,下面将建立一个新的用户并将刚才建立的数据库的管理权限赋予他
代码:
GRANT ALL PRIVILEGES ON my_database.* TO user@"%" IDENTIFIED BY "654321";
Query OK, 0 rows affected (0.10 sec)

这句命令的翻译:赋予 所有 特权 关于 以my-database为开头的文件 给 用户user 在localhost主机上 确立身份 以 密码654321,当然你可以任意修改user,654321为你喜欢的,只要是合法的标识符就可以了。
然后就可以用新建立的用户登录和管理数据库了
代码:
mysql -h localhost -u user -p654321 -D my_database

创建表
代码:
create table userdata(id int(3) not null,name varchar(30) not null,sex varchar(1) not null,brithday date );

照此格式向表中插入数据
代码:
insert into userdata value('1','张三','f','1986-08-03');

至此数据库系统的安装配置,数据库的建立,用户的建立,数据表的建立,数据的插入完成。下面是如何用java来连接和使用数据库的过程。

最后由 牙签儿 编辑于 2008-02-20 18:21,总共编辑了 1 次

作者: 牙签儿   发布时间: 2008-02-20

二.java使用mysql
1.系统的配置
下载connectors/J(须注册)或从附件中下载,将下载好的文件mysql-connector-java-5.1.5.tar.gz解压缩,找出其中的
mysql-connector-java-5.0.8-bin.jar文件,然后打开终端
代码:
sudo cp mysql-connector-java-5.0.8-bin.jar /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/ext

注意其中的java-6-sun-1.6.0.03因个人安装的jdk版本不同而不同,自己选择。
2.程序的编制
下面给出我所编制的一个java程序,可作为参考,尤其注意其中的数据库连接部分的代码,我在此处出错不少
附件:
mysql-connector-java-5.0.8-bin.jar [528.18 KiB]
被下载 1097 次


最后由 牙签儿 编辑于 2008-02-29 20:45,总共编辑了 4 次

作者: 牙签儿   发布时间: 2008-02-20

代码:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

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

/**
*
* @author n
*/
public class DatabaseOperation {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ResultSet rs;
        boolean s;
        String sql = "select * from userdata";
        DatabaseOperation dbop = new DatabaseOperation();
        dbop.connect();
        rs = dbop.executeSQL(sql);
        try {
            while (rs.next())
            {
                System.out.print("序号:" + rs.getString(1));
                System.out.print("姓名:" + rs.getString(2));
                System.out.print("性别:" + rs.getString(3));
                System.out.println("生日:" + rs.getString(4));
            }
        } catch (Exception e) {
            System.out.println("出错!");
        }
        try
        {
            s=dbop.executeUpdate("insert into userdata value('2','小后','F','1987-12-23');");
            s=dbop.executeUpdate("insert into userdata value('3','小吕','F','1987-12-23');");
            s=dbop.executeUpdate("insert into userdata value('4','小朱','F','1987-12-23');");
            s=dbop.executeUpdate("insert into userdata value('5','小马','F','1987-12-23');");
            rs = dbop.executeSQL(sql);
            while (rs.next())
            {
                System.out.print("序号:" + rs.getString(1));
                System.out.print("姓名:" + rs.getString(2));
                System.out.print("性别:" + rs.getString(3));
                System.out.println("生日:" + rs.getString(4));
            }
        }
        catch(Exception e)
        {
        }
        try
        {
            dbop.disConnection();
        }
        catch(Exception e)
        {
        }

    }
    //构造函数
    public DatabaseOperation(String dataBase, String userName, String password) {
        this.dataBase = dataBase;
        this.userName = userName;
        this.password = password;
    }
    //构造函数
    public DatabaseOperation() {
        this.host = "localhost";
        this.dataBase = "my_database";
        this.userName = "user";
        this.password = "654321";
        this.dbDriver = "com.mysql.jdbc.Driver";
        this.url = "jdbc:mysql://localhost/mydb";
        this.statement = null;
        this.resultSet = null;
        this.connection = null;

    }
    //连接数据库
    public Connection connect() {
        try {
            Class.forName(this.dbDriver).newInstance();
            connection = DriverManager.getConnection("jdbc:mysql://"+this.host+":3306/"+this.dataBase+"?user="+
                                                      this.userName+"&password="+this.password+
                                                      "&useUnicode=true&characterEncoding=UTF-8");
        } catch (Exception e) {
            System.out.println("连接出错!");
        }

        return (this.connection);
    }
    //关闭连接
    public boolean disConnection() {
        try
        {
            this.connection.close();
            this.statement.close();
        }
       catch (SQLException e)
        {
            System.out.println("关闭连接失败!");
            return (false);
        }

        return (true);
    }
    //获得statement
    public Statement getStatement() {
        try {
            this.statement = this.connect().createStatement();
        } catch (SQLException e) {
            System.out.println("statement产生失败!");
            return (null);
        }
        return (this.statement);
    }

    //执行查询语句
    public ResultSet executeSQL(String sql) {
        try {
            this.resultSet = this.getStatement().executeQuery(sql);
        } catch (SQLException e) {
            System.out.println("执行出错!");
            return (null);
        }

        return (this.resultSet);
    }
    //执行更新语句
    public boolean executeUpdate(String sql) {
        int state;
        try {
            this.statement.executeUpdate(sql);
        } catch (SQLException e) {
            System.out.println("更新出错!");
            return (false);
        }
        return (true);
    }
    private String userName;//用户名
    private String password;//用户密码
    private String dbDriver;//驱动
    private String url;//数据库位置
    private String dataBase;//数据库名称
    private String host;//主机
    private ResultSet resultSet;//查询产生的结果集
    private Statement statement;//
    private Connection connection;//产生的数据库连接
}

[/code]

作者: 牙签儿   发布时间: 2008-02-20

沙发。。。。。。二楼是我的了!

代码:
到如下网站下载connectors/J(须注册),将下载好的文件mysql-connector-java-5.1.5.tar.gz解压缩,找出其中的
mysql-connector-java-5.0.8-bin.jar文件,然后打开终端
驱动的网址没有给出来啊老大????

作者: gdzhljw   发布时间: 2008-02-22

找到以下了:第一个不行(可能要注册所以不行)就第二个注册一下就可以了

http://dev.mysql.com/get/Downloads/Conn ... ase/Mysql/

http://dev.mysql.com/downloads/connector/j/5.0.html

作者: gdzhljw   发布时间: 2008-02-22

不用那么麻烦,源里就有mysql的jdbc驱动
sudo apt-get install libmysql-java

作者: 壹哥   发布时间: 2008-02-22

既然已经指定了[mysqld]的default-character_set是utf8了
那么创建UTF8数据库的时候,不必再指定字符集了
还有mysql的默认字符集都是latin1
那么当你需要用MySQL自带的CLI Client插入非西文字符的时候,需要将
character_set_client指定为系统内码,
character_set_connection指定为能包含你输入的所有字符的字符集
MySQL AB的JDBC驱动,默认是以utf8的character_set_client
连接Mysql的,所以在程序里获得数据库连接的时候不必指定字符集了
如果需要在MySQL CLI Client中,检索非西文字符数据,还需要将
character_set_results指定为系统内码。
简单的做法是在选项文件中将[client]的
default-character_set指定为系统内码,比如Ubuntu的utf8

作者: lululau   发布时间: 2008-03-28

如果连jdbc驱动都要喊着要靠别人给出下载地址的话,连起码的一点linux精神都没有……

唉……

作者: bird   发布时间: 2008-03-31

正找着这东西来

作者: anjiannian   发布时间: 2009-09-19

怎么不用hibernate 我用着挺好阿,用ant可以自己处理表生成对象

作者: trualy   发布时间: 2009-09-25

低级错误

代码:
sudo gedit /etc/mysql/my.cnf

不是
代码:
sudo gedit /ect/mysql/my.cnf

作者: wzs993636   发布时间: 2009-09-27

wzs993636 写道:
低级错误

代码:
sudo gedit /etc/mysql/my.cnf

不是
代码:
sudo gedit /ect/mysql/my.cnf

是的.
打错了应该

作者: meteormatt   发布时间: 2009-10-05

很感谢啊。很详细

作者: lubobill1990   发布时间: 2009-10-10

有帮助 谢谢

作者: situzhuge   发布时间: 2009-10-21

好贴

作者: xunyicao   发布时间: 2010-03-03

连接出错!
连接出错!
Exception in thread "main" java.lang.NullPointerException
at DatabaseOperation.getStatement(DatabaseOperation.java:116)
at DatabaseOperation.executeSQL(DatabaseOperation.java:127)
at DatabaseOperation.main(DatabaseOperation.java:27)

作者: halfman   发布时间: 2010-07-13