javaweb JDBC连接Mysql与Oracle的比较及启示总结
2016-02-17 18:29
429 查看
今天从早晨开始打算做一个javaweb连接mysql的小项目,因为此前学过Oracle,也了解到这两个数据库JDBC的方式大同小异,因此觉得没什么难度,却没想到遇到了很多问题,花费了数小时的时间才解决这些问题,下面简单做一个总结,避免以后再遇到同样的问题,也希望同学们以后不要跟我一样碰到这些古怪的问题。。
注:本文适合有javaweb基础和Oracle基础的童鞋参考,因为只列出了比较,省略的大部分过程。
1、安装MySql和SQLyog,SQLyog是MySql的一个不错的可视化工具,使得MySql操作起来比Oracle更方便,这里没什么问题,不多说。
2、导jar包,包名:mysql-connector-java-5.0.3-bin.jar,自己下载,没有问题。
3、配置环境变量,这里就有点问题了,因为一开始有人说只用配置一个classpath就好,即刚才第二步的jar包所放置的位置,我是把jar包随便放到了一个盘里,然后把路径放到了系统变量的classpath里。后来一查,有人说mysql还需要配path,即mysql安装目录里面的bin文件夹的目录,我的是:C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin,把这个配到path最后,别忘了加分号,配path是为了使用命令指示符,在命令指示符里输入:mysql -u
用户名 -p,回车后输入密码,就可以在黑框框里面操作,如果回车后提示错误,说明path配错了。
经本人亲测,貌似这两个环境变量都可以不配,暂时也不影响javaweb项目操作mysql数据库,本人才疏学浅,不知道以后会不会有隐患,还希望知道的大神予以指点,谢谢。
4、创建数据库,使用SQLyog创建数据库和表特别简单,就像使用dreamweaver做html一样,mysql使用的sql语句也和标准差不多,暂时够用,不过需要注意,我第一次创建表的时候,是这样写的:CREATE TABLE users (
id int(4) NOT NULL PRIMARY KEY AUTO_INCREMENT
lname varchar(10) NOT NULL,
lpass varchar(10) NOT NULL,
age int(2) NOT NULL
);注意:mysql里没有varchar2,只有varchar。
这样写确实可以创建数据表,不过我插入一条资料
INSERT INTO users(lname,lpass,age) vsalues('张三','123',10);
之后发现问题了:里面的中文变成了许多问号,显然是字符集的问题,解决办法是,在创建表的时候,最后一行,在分号前,写
ENGINE=InnoDB DEFAULT CHARSET=utf8;在插入数据,问题解决。
5、bean层不用说,跟数据库对上就行,dao层需要说一说,因为需要准备Connection,PreparedStatement和ResultSet,一律导入java.sql.的那个类,尽管mysql也有对应的Connection和PreparedStatement类,不过最后还是要强转回来,也就是说,没差别
。
6、其他几个层该怎么写还是怎么写,没差别,连接mysql的driver是
com.mysql.jdbc.Driver
重点需要说一下连接mysql的url,一开始看别人写的是
jdbc:mysql://localhost:3306/数据库名后来全部写好之后一测试,发现请求路径没问题,却转到了空白页面,当时并不知道哪里出了问题,就一句一句输出检查,发现从数据库里取出来的值很古怪,int类型的都是0,String类型的什么也没有。。但是由于resultset游标非空,就一步一步往下走,没有报错,这就说明查到数据了,并没有传到jsp上,我在这里停留了很久,最后终于找到了解决办法:mysql的url应该是
jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8又是字符编码的问题,不知道是不是因为数据表定义时,同样也设置了字符编码的原因。
至此,已经可以把后台数据传到前台jsp,若本文的内容有错误,欢迎留言或联系我,谢谢。
注:本文适合有javaweb基础和Oracle基础的童鞋参考,因为只列出了比较,省略的大部分过程。
1、安装MySql和SQLyog,SQLyog是MySql的一个不错的可视化工具,使得MySql操作起来比Oracle更方便,这里没什么问题,不多说。
2、导jar包,包名:mysql-connector-java-5.0.3-bin.jar,自己下载,没有问题。
3、配置环境变量,这里就有点问题了,因为一开始有人说只用配置一个classpath就好,即刚才第二步的jar包所放置的位置,我是把jar包随便放到了一个盘里,然后把路径放到了系统变量的classpath里。后来一查,有人说mysql还需要配path,即mysql安装目录里面的bin文件夹的目录,我的是:C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin,把这个配到path最后,别忘了加分号,配path是为了使用命令指示符,在命令指示符里输入:mysql -u
用户名 -p,回车后输入密码,就可以在黑框框里面操作,如果回车后提示错误,说明path配错了。
经本人亲测,貌似这两个环境变量都可以不配,暂时也不影响javaweb项目操作mysql数据库,本人才疏学浅,不知道以后会不会有隐患,还希望知道的大神予以指点,谢谢。
4、创建数据库,使用SQLyog创建数据库和表特别简单,就像使用dreamweaver做html一样,mysql使用的sql语句也和标准差不多,暂时够用,不过需要注意,我第一次创建表的时候,是这样写的:CREATE TABLE users (
id int(4) NOT NULL PRIMARY KEY AUTO_INCREMENT
lname varchar(10) NOT NULL,
lpass varchar(10) NOT NULL,
age int(2) NOT NULL
);注意:mysql里没有varchar2,只有varchar。
这样写确实可以创建数据表,不过我插入一条资料
INSERT INTO users(lname,lpass,age) vsalues('张三','123',10);
之后发现问题了:里面的中文变成了许多问号,显然是字符集的问题,解决办法是,在创建表的时候,最后一行,在分号前,写
ENGINE=InnoDB DEFAULT CHARSET=utf8;在插入数据,问题解决。
5、bean层不用说,跟数据库对上就行,dao层需要说一说,因为需要准备Connection,PreparedStatement和ResultSet,一律导入java.sql.的那个类,尽管mysql也有对应的Connection和PreparedStatement类,不过最后还是要强转回来,也就是说,没差别
。
6、其他几个层该怎么写还是怎么写,没差别,连接mysql的driver是
com.mysql.jdbc.Driver
重点需要说一下连接mysql的url,一开始看别人写的是
jdbc:mysql://localhost:3306/数据库名后来全部写好之后一测试,发现请求路径没问题,却转到了空白页面,当时并不知道哪里出了问题,就一句一句输出检查,发现从数据库里取出来的值很古怪,int类型的都是0,String类型的什么也没有。。但是由于resultset游标非空,就一步一步往下走,没有报错,这就说明查到数据了,并没有传到jsp上,我在这里停留了很久,最后终于找到了解决办法:mysql的url应该是
jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8又是字符编码的问题,不知道是不是因为数据表定义时,同样也设置了字符编码的原因。
至此,已经可以把后台数据传到前台jsp,若本文的内容有错误,欢迎留言或联系我,谢谢。
相关文章推荐
- ORACLE中Insert时总是出现让enter value for....
- oracle 数据库表锁,解锁方法
- 导出远程oracle数据库到本地
- oracle-绑定变量学习笔记(未完待续)
- oracle EBS采购订单各表作用分析
- C# 与 Oracle 中 BINARY_DOUBLE数据类型查询
- Oracle RAC环境的日志体系
- 静默安装oracle 11g及参数配置优化详解
- ORACLE中的pfile和spfile
- Oracle 中的 TO_DATE 和 TO_CHAR 函数
- oracle 数据库的建表以及字段的增删改查
- oracle重建索引
- Oracle 游标使用详解
- oracle plsql性能优化
- oracle新建表空间及用户的笔记
- oracle 数据库用户帐号密码过期
- MAX函数和GROUP BY 语句一起使用的一个误区
- 存储过程遍历游标三种方式
- Linux Is Not Matrix——oracle创建数据库实例
- oracle orde by分页的问题