ubuntu7.10下java连接mysql的过程

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
头像
牙签儿
帖子: 509
注册时间: 2007-06-30 0:27

ubuntu7.10下java连接mysql的过程

#1

帖子 牙签儿 » 2008-02-20 15:54

以下为本人学习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 次。
头像
牙签儿
帖子: 509
注册时间: 2007-06-30 0:27

#2

帖子 牙签儿 » 2008-02-20 15:55

二.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) 已下载 1164 次
上次由 牙签儿 在 2008-02-29 20:45,总共编辑 4 次。
头像
牙签儿
帖子: 509
注册时间: 2007-06-30 0:27

#3

帖子 牙签儿 » 2008-02-20 15:56

代码: 全选

/*
 * 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]
头像
gdzhljw
帖子: 314
注册时间: 2007-05-19 23:18
来自: 广东珠海

#4

帖子 gdzhljw » 2008-02-22 13:54

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

代码: 全选

到如下网站下载connectors/J(须注册),将下载好的文件mysql-connector-java-5.1.5.tar.gz解压缩,找出其中的
mysql-connector-java-5.0.8-bin.jar文件,然后打开终端 
驱动的网址没有给出来啊老大????
凡事都可行.但不都有益处。凡事都可行.但不都造就人。(哥林多前10:23)

my blog : http://gdzhljw.blog.163.com/
http://gdzhljw.blog.ubuntu.org.cn/
头像
gdzhljw
帖子: 314
注册时间: 2007-05-19 23:18
来自: 广东珠海

#5

帖子 gdzhljw » 2008-02-22 15:43

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

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

http://dev.mysql.com/downloads/connector/j/5.0.html
凡事都可行.但不都有益处。凡事都可行.但不都造就人。(哥林多前10:23)

my blog : http://gdzhljw.blog.163.com/
http://gdzhljw.blog.ubuntu.org.cn/
头像
壹哥
帖子: 199
注册时间: 2008-01-02 17:26

#6

帖子 壹哥 » 2008-02-22 15:49

不用那么麻烦,源里就有mysql的jdbc驱动
sudo apt-get install libmysql-java
头像
lululau
帖子: 105
注册时间: 2007-05-28 11:17

#7

帖子 lululau » 2008-03-28 16:07

既然已经指定了[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
头像
bird
帖子: 765
注册时间: 2006-09-04 10:45
联系:

#8

帖子 bird » 2008-03-31 13:48

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

唉……
头像
anjiannian
帖子: 217
注册时间: 2008-12-22 22:48

Re: ubuntu7.10下java连接mysql的过程

#9

帖子 anjiannian » 2009-09-19 16:16

正找着这东西来
不要小人得志
trualy
帖子: 5
注册时间: 2009-08-20 15:48

Re: ubuntu7.10下java连接mysql的过程

#10

帖子 trualy » 2009-09-25 22:47

怎么不用hibernate 我用着挺好阿,用ant可以自己处理表生成对象
wzs993636
帖子: 65
注册时间: 2008-05-12 18:48

Re: ubuntu7.10下java连接mysql的过程

#11

帖子 wzs993636 » 2009-09-27 21:12

低级错误

代码: 全选

sudo gedit /etc/mysql/my.cnf
不是

代码: 全选

sudo gedit /ect/mysql/my.cnf
头像
meteormatt
帖子: 693
注册时间: 2008-02-24 14:15
系统: Ubuntu
来自: 江苏
联系:

Re: ubuntu7.10下java连接mysql的过程

#12

帖子 meteormatt » 2009-10-05 19:45

wzs993636 写了:低级错误

代码: 全选

sudo gedit /etc/mysql/my.cnf
不是

代码: 全选

sudo gedit /ect/mysql/my.cnf
是的.
打错了应该

怀念以前的老台式机。可惜现在租的地方没条件用了。目前只能用笔记本和手机了。
lubobill1990
帖子: 8
注册时间: 2009-08-07 20:38

Re: ubuntu7.10下java连接mysql的过程

#13

帖子 lubobill1990 » 2009-10-10 1:50

很感谢啊。很详细
situzhuge
帖子: 2
注册时间: 2009-10-19 17:38

Re: ubuntu7.10下java连接mysql的过程

#14

帖子 situzhuge » 2009-10-21 21:25

有帮助 谢谢 :em11
xunyicao
帖子: 5
注册时间: 2010-01-07 19:13

Re: ubuntu7.10下java连接mysql的过程

#15

帖子 xunyicao » 2010-03-03 17:23

:em11 好贴
回复