您的位置:首页 > 数据库 > MySQL

项目从mysql移植到SQL sqlserver问题汇总

2013-10-29 18:23 309 查看
一、 数据库表结构改变:

使用navicat for mysql导出的sql语句如例

CREATE TABLE `departments` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`depname` varchar(50) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ms sqlserver不支持·符号,所有的表名、字段名需要去掉·号。

mysql的主键自增长为AUTO_INCREMENT, ms sqlserver为identity

ms server不支持int(11)的写法,改为int

例如:

CREATE TABLE [dbo].[departments](

[depname] [nchar](10) NULL,

[id] [int] IDENTITY(1,1) NOT NULL

) ON [PRIMARY]

插入数据的时候,ms server不需要传入自增长的主键,如果已有数据id,可以如下操作

SET IDENTITY_INSERT [TableName] ON

insert() valus(......)

SET IDENTITY_INSERT [TableName] OFF

二、项目使用springjdbc链接ms sqlserver2008,起初用的微软提供的jar包,但一直报错,提示不能重复获取多次,后来google了一下是微软驱动包兼容性问题,下载

第三方jtds-1.2.3.jar解决问题

三、mysql分页limit的使用,而在ms sqlserver不支持limit,使用top解决

//mysql版本

public List getPages(int currentPage, int NUM_PER_PAGE) {

List<Map<String, Object>> rows = jt

.queryForList(

"select name from tablename limit ?,?",

new Object[] {

(currentPage * NUM_PER_PAGE - NUM_PER_PAGE),

NUM_PER_PAGE });

return rows;

}

//ms sql版本

"select TOP (?) name from tablename where (ID NOT IN (SELECT TOP (?) id from tablename ORDER BY id)) ORDER BY ID",

new Object[] {

NUM_PER_PAGE ,currentPage * (NUM_PER_PAGE - NUM_PER_PAGE)});

return rows;

}

需要注意的是,top后面的占位符,不能使用?,需要用(?)代替

四、mysql支持boolean类型,而ms sqlserver不支持。

五、使用springjdbc传参的时候,mysql不需要指定string的类型,而ms sqlserver需要指定,因为ms sqlserver可能是varchar,也可能是nvarchar类型。比如

Object[] params = new Object[]{username};

int[] types = new int[]{Types.VARCHAR};

user=jdTempl.queryForObject(querySql,params,types,rowMapper);

六、发现通过ms server2008导出数据,id自动增长属性消失,通过

先删除原有的id列
alter table aa drop column id
然后再重新添加一列具有 identity属性的字段
alter table aa add id int identity(1,1)


最后附上jdbc.properties配置文件

#mysql database setting

#jdbc.driver=com.mysql.jdbc.Driver

#jdbc.url=jdbc:mysql://localhost:3306/empdb?useUnicode=true&characterEncoding=utf-8

#jdbc.username=root

#jdbc.password=123456

#oracle database settings

#jdbc.driver=oracle.jdbc.driver.OracleDriver

#jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl

#jdbc.username=username

#jdbc.password=123456

#mssql database settings

#jdbc.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver

#jdbc.url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=empdb

jdbc.driver=net.sourceforge.jtds.jdbc.Driver

jdbc.url=jdbc:jtds:sqlserver://localhost:1433/empdb

jdbc.username=sa

jdbc.password=123456
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: