日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql改为sql_项目需求变更:Mysql改为SqlServer

發布時間:2024/9/30 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql改为sql_项目需求变更:Mysql改为SqlServer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

HX說那邊要求數據庫用SqlServer,之前說好用MySql的,結果說變就變~ 木有辦法,只能進行修改測試,由于沒有弄過SqlServer,也當做個學習機會。

第一步:安裝SqlServer2005

參考:

c.若安裝完沒有管理工具

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.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.準備工作

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,出現如下錯誤:

且不得同時導入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注入問題)

總結

以上是生活随笔為你收集整理的mysql改为sql_项目需求变更:Mysql改为SqlServer的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。