`
huzezhen1
  • 浏览: 7728 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

项目需求变更:Mysql改为SqlServer

    博客分类:
  • java
阅读更多

2014年12月4日, AM 10:59:45 

        HX说那边要求数据库用SqlServer,之前说好用MySql的,结果说变就变~ 木有办法,只能进行修改测试,由于没有弄过SqlServer,也当做个学习机会。

 

        第一步:安装SqlServer2005

        参考:

        a.SqlServer2005简体中文开发版(http://pan.baidu.com/share/link?shareid=322740&uk=268517599)

        b.安装教程(http://www.cnblogs.com/icewee/articles/2019783.html#!comments)

        c.若安装完没有管理工具

        (http://www.microsoft.com/zh-cn/download/details.aspx?id=8961#RelatedDownloads)

 

2014年12月4日, PM 04:55:46    

        第二步:将之前MySql的表结构和数据转存到SqlServer2005

        a.下载数据库结构数据转换的工具Full Convert Enterprise(http://www.kbdown.com/d_191538_4.html)

                a.1进入软件,选择要转换的数据源(本文将Mysql转为SqlServer,因此这里选择Mysql)

               

                a.2下一步,选择要转换到SqlServer中的数据库(先新建好一个数据库,如这里的petitipon)

 

                a.3选择好表之后,点击Next,再点击Conver!即可 

 

        b.下载数据库管理可视化工具-Navicat Premium(http://www.liangchan.net/liangchan/4785.html)

                 b.1分别新建连接可以找到这两个数据库petition

 

                 b2.也可以用其他管理工具,只是个人比较喜欢用这个。需要注意的是,前几步的数据库转换之后,表间约束是不会一起转换过来的,所以我们得重新手动建立表间约束,设置外键。参照Mysql中的外键,在SqlServer2005中进行一模一样的操作。(表名-右键-设计表-外键)

               

                  b3.设置好外键之后,就完成了。如果服务器上只有SqlServer的管理工具Management Studio,不让安装Navicat等其他工具,就可以在本机上导出sql文件,再复制此sql文件的内容,在Management Studio上新建查询即可。

 

2014年12月5日, PM 04:59:53

        第三步,在Java中使用JDBC连接SqlServer2005。

        a.准备工作

                 a1.到微软网站下载驱动(http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=11774),我下的是最新版:Microsoft JDBC Driver 4.0 for SQL Server。

                 a2.运行sqljdbc_<版本>_enu.exe,将文件解压到C:\Program Files

                 即将Microsoft JDBC Driver 4.0 for SQL Server文件夹放在C:\Program Files中

                 a3.添加环境变量(计算机-右键-属性-高级系统设置-环境变量-Path),编辑Path,在其最后加上C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\chs\sqljdbc4.jar;

                 注意:SqlServer2005需要的驱动是sqljdbc.jar。而Microsoft JDBC Driver 4.0 for SQL Server文件夹都是带有sqljdbc.jar和sqljdbc4.jar,我之所以这里用的是sqljdbc4.jar,是因为我一开始使用的是sqljdbc.jar,结果编译的时候出错,原因是我用的是jre6.0和jdk1.6,出现如下错误:


 

                  详情参考:http://www.cnblogs.com/fromchaos/archive/2011/03/31/2000724.html

                  且不得同时导入sqljdbc.jar和sqljdbc4.jar,当我导入两个jar时,还是提示同样错误。

                 a.4设置SqlServer服务器

                 “开始”→“程序”→“Microsoft SQL Server 2005”→“配置工具”→“SQL Server 配置管理器”→“SQL Server 2005 网络配置”→“MSSQLSERVER 的协议”。如果“TCP/IP”没有启用,右键单击选择“启动”。双击“TCP/IP”进入属性设置,在“IP 地址”里,可以配置“IPAll”中的“TCP 端口”,默认为1433。重新启动SQL Server或者重启计算机。(如果没启动TCP/IP,会出现错误Connection refused: connect。参考:http://jarg.iteye.com/blog/1465226

        c. 连接数据库demo

import java.sql.*;
public class Test {
public static void main(String[] srg) {
  String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  //加载JDBC驱动
  String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=petition";  //连接服务器和数据库test
  String userName = "sa";  //默认用户名
  String userPwd = "123456";  //密码
  Connection dbConn;

  try {
   Class.forName(driverName);
   dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
   System.out.println("Connection Successful!");  //如果连接成功 控制台输出Connection Successful!
  } catch (Exception e) {
   e.printStackTrace();
  }
}
} 
        d.连接成功,按照c操作中的连接方法,修改代码,以下列出遇到的问题

                 c1.Mysql中实现分页的limit,在SqlServer中不适用,因此进行修改,换成top

                 表示取第7条至第9条之间数据的SQL语句:

select top 3 * from tablename where id not in ( select top 6 id from tablename )

                 表示取第m条至第n条之间数据的SQL语句:

select top (n-m+1) id from tablename where id not in ( select top m-1 id from tablename )

                 需要注意的是Mysql中limit m,n 是指第m+1条记录开始取n条

                 c2.修改成top后却发现报错:'@P0' 附近有语法错误,查找原因后发现是由预编译Preparstatement与top结合导致的。

                 在Java中对数据库查询时经常使用这样的SQL语句:

select top ? * from 表名 where 列名 = ?
                 此时的问号是PreparedStatement预编译对象的参数占位符,需要使用setXX()系列方法对其赋值后再执行。 但是,Top后面是不允许使用问号占位符的,此处的错误就是由此引起的。

                 应将Top后面的问号改为具体数字,或者使用“+”连接变量与字符串。 上句SQL可修改为以下写法:

"select top " + num + " * from 表名 where 列名 = ?"

                 上述num为int型变量。除了Top后的问号以外,其他参数占位符不受此约束。(不过这样又无法避免sql注入问题)


 

 

 

  • 大小: 255.5 KB
  • 大小: 306.8 KB
  • 大小: 229.2 KB
  • 大小: 49.4 KB
  • 大小: 103.3 KB
  • 大小: 337.9 KB
分享到:
评论

相关推荐

    MySQL数据库转移到SqlServer数据库

    - **结构转换**:MySQL与SQL Server的语法和数据类型存在差异,需要将MySQL的数据结构转换为SQL Server兼容的格式。 - **数据导入**:使用SQL Server Management Studio(SSMS)或其他工具,如SQL Server Import ...

    若依分离版本+SqlServer版本数据库

    1、若依分离版本代码 2、数据由mysql变更为SqlServer 3、包含SqlServer数据库备份 4、下载用idea直接打开 5、启动方式和若依本身的启动顺序一样

    如何把sqlserver数据迁移到mysql数据库及需要注意事项

    在IT行业中,数据库迁移是一项常见的任务,特别是在项目需求变更或扩展时。本文主要讨论的是如何将数据从SQL Server迁移到MySQL数据库,以及在这个过程中需要注意的关键点。 首先,我们需要了解SQL Server与MySQL...

    ansible执行mysql sql 脚本

    在IT领域,自动化工具的...总之,Ansible结合MySQL SQL脚本,为我们提供了一种高效、可重复的数据库管理方式。通过编写清晰的Playbooks,我们可以轻松地在多台服务器上执行复杂的数据库操作,节省大量手动操作的时间。

    Toad for SQL Server 6.8.2.9 Xpert Edition x64_仅供个人学习参考_严禁商用.rar

    Toad for SQL Server 6.8.2.9 Xpert Edition 是一款强大的SQL Server数据库管理工具,专为数据库管理员和开发人员设计。该版本是64位系统适用的,提供了丰富的功能来提升数据库管理和开发效率。 1. **数据库管理**...

    Toad for SQL Server 6.8.2.9 Xpert Edition x86_仅供个人学习参考_严禁商用.rar

    Toad for SQL Server 6.8.2.9 Xpert Edition 是一款强大的数据库管理和开发工具,专为SQL Server设计,适用于个人学习和提升数据库技能。这个版本是x86架构,意味着它支持32位操作系统。尽管仅供个人学习参考,不...

    SqlServer Mysql数据库修改自增列的值及相应问题的解决方案

    sql server我测试是2008、2012和2014,都不允许变更自增列值,我相信SQL Server 2005+的环境均不允许变更字段列值。 如果非要在SQL Server 平台修改自增列值的,那就手动需要自增列属性,然后修改该列值,修改成功...

    HEIDISQL工具!

    2. **数据库管理**:可以连接到多种数据库系统,包括MySQL、MariaDB、SQL Server、Oracle、PostgreSQL等,便于进行数据浏览、备份、恢复及表结构管理。 3. **数据导入导出**:HEIDISQL支持批量导入和导出数据,支持...

    MySQL代码学习和调试pdf文档

    - **更新代码**:使用`bzr pull` 或 `bzr pull lp:mysql-server/5.5` 可以更新已有的代码库到最新状态。 - **创建公共代码库**:为多个分支创建一个公共的代码库可以节省磁盘空间并加速后续的克隆操作。步骤如下:...

    定制MySQL的字符交响乐:字符集与排序规则配置指南

    ### 定制MySQL的字符交响乐:字符集与排序规则配置指南 #### MySQL简介及其特点 MySQL作为一款流行的开源关系型数据库...掌握了这些技巧,开发者就能更加高效地利用MySQL这一强大工具,为自己的项目增添更多可能性。

    简单的聊天室(移植到了MySQL)

    【标题】"简单的聊天室(移植到了MySQL)"是一个针对初学者设计的Web应用程序,它原先基于MS SQL Server,现在已被移植到MySQL数据库系统。这个项目对于那些希望了解如何在不同数据库平台上迁移Web应用的人来说非常...

    sql数据包

    10. **SQL标准与方言**:虽然SQL有标准,但不同的数据库系统(如MySQL、PostgreSQL、Oracle、SQL Server等)可能有自己的扩展和语法差异,实际操作时需要了解所用系统的特性。 理解并熟练运用这些知识点,能够有效...

    SQLServer数据库中开启CDC导致事务日志空间被占满的原因

    3. 后台进程(如SQL Server Agent中的cdc.*_capture作业或复制代理作业)会读取这些日志条目,并将数据变更记录到系统表(对于CDC)或分布库(对于复制)。 4. 一旦这些日志被处理,它们的状态会被改变,如果在简单...

    MySql.Data.rar_.NET MYSQL

    你可以设置`CommandText`属性为SQL命令,然后使用`ExecuteNonQuery`(更新操作)、`ExecuteReader`(查询返回结果集)或`ExecuteScalar`(返回单个值)方法执行命令。 5. **数据适配器和数据集**:`...

    mysql-8.0.22.0.msi

    MySQL 8.0.22.0 是 MySQL 数据库管理系统的一个版本,该版本的安装程序文件名为 "mysql-8.0.22.0.msi"。MySQL 是一个开源的关系型数据库系统,广泛应用于Web应用、数据分析、企业内部数据存储等领域。它的特性包括高...

    SQL函数总结

    它由美国国家标准协会(ANSI)制定,广泛应用于各种数据库系统中,如MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase等。 #### 二、SQL的功能 SQL的功能非常强大,可以实现以下操作: 1. **执行查询**...

    重设MYSQL ROOT密码

    找到MySQL的安装路径,通常是`C:\Program Files\MySQL\MySQL Server xx`(xx代表版本号),其中包含`mysqld-nt.exe`或`mysqld.exe`。在命令提示符窗口中输入以下命令启动MySQL服务,使其跳过权限表检查: ```cmd ...

    SQL2005动态表无限级分类存储过程

    总的来说,这些存储过程的核心是通过动态生成SQL语句来处理无限级分类的增删改查操作,它们利用了SQL Server 2005的特性和功能,如递归查询、事务管理等,确保了在复杂的数据结构中的数据完整性和一致性。...

    计划任务自动执行Sql程序

    "计划任务自动执行Sql程序"的主题,意味着我们将探讨如何设置和管理一个系统,使其能够按照预设的时间表自动运行SQL脚本,类似于SQL Server的作业调度功能。这个主题涵盖了多个IT知识点,包括计划任务的管理、SQL...

Global site tag (gtag.js) - Google Analytics