电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

SQL Server2000+JDBC常見問題及解決

瀏覽:83日期:2024-07-05 15:27:19

SQL Server 2000 是當(dāng)今網(wǎng)絡(luò)編程中使用的比較多的一個(gè)數(shù)據(jù)庫系統(tǒng),java是目前最流行的編程語言,在編程中涉及的比較多也比較重要的就是數(shù)據(jù)庫問題,java自身提供了對(duì)各類主流數(shù)據(jù)庫系統(tǒng)的支持,通過java.sql 庫,提供了統(tǒng)一的接口,使得可以在java環(huán)境下不必對(duì)程序作大規(guī)模的修改,只要更改相應(yīng)的驅(qū)動(dòng)程序,即可實(shí)現(xiàn)對(duì)各類數(shù)據(jù)庫的操作,從而提高軟件的生存周期和降低軟件的開發(fā)成本和維護(hù)費(fèi)用,在這種情況下SQL Server 2000 和java 的融合問題就顯得比較重要了,本文簡(jiǎn)要地闡述一下SQL Server 2000 和jdk的融合問題。

系統(tǒng)需求:

 數(shù)據(jù)庫:SQL Server 2000 sp3 驅(qū)動(dòng)程序:SQL Server driver for jdbc  java版本:jdk1.2以上

1:我們首先使用jdbc-odbc橋來實(shí)現(xiàn)數(shù)據(jù)庫的連接,這個(gè)相對(duì)簡(jiǎn)單。首先使用SQL Server 企業(yè)管理其建立一個(gè)數(shù)據(jù)庫test,并建立一個(gè)簡(jiǎn)單的表 first_table

建立odbc數(shù)據(jù)源 ,各步驟采用默認(rèn)操作即可

編寫一個(gè)簡(jiǎn)單的測(cè)試程序,該程序主要實(shí)現(xiàn)數(shù)據(jù)庫的連接,以及一個(gè)簡(jiǎn)單的sql操作 ,代碼如下:

/***********************************************/*/*DbTest.java/*/******************************************* */

import java.sql.*;

public class DbTest {

 Connection con; Statement sta; ResultSet rs;

 String driver; String url; String user; String pwd; public DbTest() {driver = 'sun.jdbc.odbc.JdbcOdbcDriver';url = 'jdbc:odbc:store_manager';user = 'share';pwd = 'share';init(); } public void init() {try{ Class.forName(driver); System.out.println('driver is ok'); con = DriverManager.getConnection(url,user,pwd); System.out.println('conection is ok'); sta = con.createStatement(); rs = sta.executeQuery('select * from room'); while(rs.next())System.out.println(rs.getInt('roomNum')); }catch(Exception e){ e.printStackTrace();} }

 public static void main(String args [])//自己替換[] {new DbTest(); }};

運(yùn)行結(jié)果如下:

driver is okconection is ok100110021003100410051006Press any key to continue...

順利通過測(cè)試

2、我們這次不通過odbc橋來操作數(shù)據(jù)庫,我們采用SQL Server driver 來實(shí)現(xiàn)對(duì)SQL Server數(shù)據(jù)庫的操作, 這將是我們這篇文章的重點(diǎn),因?yàn)閖dbc-odbc橋是一種常見的操作windows系統(tǒng)數(shù)據(jù)庫的常用方法,但它存在的缺點(diǎn)很多,所以現(xiàn)在很多開發(fā)者都側(cè)重于使用sqlserver driver來操作,在這里我們通過一步步的調(diào)試,來加深讀者對(duì)這種連接的理解

在通常的理解下,只要我們裝了sqlserver driver for jdbc 我們便可進(jìn)行數(shù)據(jù)庫編程,事實(shí)則不然,首先我們看下邊的代碼:

/***********************************************/*/*DbTest.java/*http://www.mypchelp.cn/******************************************* */

import java.sql.*;

public class DbTest {

 Connection con; Statement sta; ResultSet rs;

 String driver; String url; String user; String pwd; public DbTest() {driver = 'com.microsoft.jdbc.sqlserver.SQLServerDriver';;url = 'jdbc:microsoft:sqlserver://localhost:1433;DatabaseName =StoreManager';user = 'sa';pwd = 'potsmart10';init(); } public void init() {try{ Class.forName(driver); System.out.println('driver is ok'); con = DriverManager.getConnection(url,user,pwd); System.out.println('conection is ok'); sta = con.createStatement(); rs = sta.executeQuery('select * from room'); while(rs.next()) System.out.println(rs.getInt('roomNum')); }catch(Exception e){ e.printStackTrace();} }

 public static void main(String args [])//自己替換[] {new DbTest(); }};

這段代碼跟上變得代碼是一樣的,差別在于驅(qū)動(dòng),還有url,這是在使用sqlserver driver for jdbc 中遇到的困惑。按道理講,上邊這段代碼應(yīng)該沒錯(cuò),可首先我們來看一下,如果SQL Server服務(wù)器沒有升級(jí)到sp3(在使用jdbc時(shí),如果系統(tǒng)是xp或者2003務(wù)必要把sqlserver 升級(jí)到sp3,往上到處都有下的),我們看看運(yùn)行結(jié)果

driver is okjava.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)

at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)at java.sql.DriverManager.getConnection(DriverManager.java:523)at java.sql.DriverManager.getConnection(DriverManager.java:171)at DbTest.init(DbTest.java:32)at DbTest.<init>(DbTest.java:25)at DbTest.main(DbTest.java:46)Press any key to continue...

出現(xiàn)上邊錯(cuò)誤的主要原因是默認(rèn)的數(shù)據(jù)庫服務(wù)器端口 1433沒有打開,無法直接連接 。

如果升級(jí)到sp3則這個(gè)問題可以結(jié)決,我們?cè)賮砜纯瓷?jí)之后,程序運(yùn)行的結(jié)果

driver is okconection is okjava.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]對(duì)象名 'room' 無效。at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(UnknownSource)at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(UnknownSource)at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(UnknownSource)at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)at com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)at DbTest.init(DbTest.java:35)at DbTest.<init>(DbTest.java:25)at DbTest.main(DbTest.java:46)Press any key to continue...

在這兒,用戶已經(jīng)登陸上去,但是卻不能訪問里邊的數(shù)據(jù)表,出現(xiàn)這個(gè)問題的原因在于sa用戶為系統(tǒng)用戶,它雖然能夠登陸數(shù)據(jù)庫,但是storeManager數(shù)據(jù)庫里邊卻沒有這個(gè)用戶的訪問權(quán)限,所以,我們現(xiàn)在為這個(gè)數(shù)據(jù)庫重新建立一個(gè)用戶share ,建立過程如下:在storeManager數(shù)據(jù)庫中選重用戶 ---〉新建用戶 -- 〉名稱選擇(這一步中有兩個(gè)關(guān)鍵點(diǎn) 1:身份驗(yàn)證選sql身份驗(yàn)證,默認(rèn)數(shù)據(jù)庫選StoreManager)-〉建立新教色share ,此時(shí)更改程序,將用戶登陸名和密碼修改一下,重新運(yùn)行程序

driver is okconection is ok100110021003100410051006Press any key to continue...

這次順利通過測(cè)試

總結(jié):

SQL Server和jdbc 的融合問題,關(guān)鍵涉及到sp3補(bǔ)丁(端口開放)還有用戶問題,解決這兩個(gè)問題之后,剩余的便是sqlserver 操作問題了,還有一點(diǎn)在遠(yuǎn)程操作的時(shí)候,要把sqlserver 組設(shè)置一下,在安全性里邊亦將身份驗(yàn)證更改為SQL Server 驗(yàn)證即可。

標(biāo)簽: JDBC
主站蜘蛛池模板: 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 | 无缝方管|无缝矩形管|无缝方矩管|无锡方管厂家 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 新车测评网_网罗汽车评测资讯_汽车评测门户报道 | 炒货机-炒菜机-炒酱机-炒米机@霍氏机械| 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 国产频谱分析仪-国产网络分析仪-上海坚融实业有限公司 | 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业 | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 搜活动房网—活动房_集装箱活动房_集成房屋_活动房屋 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 泰安塞纳春天装饰公司【网站】| 商秀—企业短视频代运营_抖音企业号托管 | 工控机,嵌入式主板,工业主板,arm主板,图像采集卡,poe网卡,朗锐智科 | 企小优-企业数字化转型服务商_网络推广_网络推广公司 | SDI车窗夹力测试仪-KEMKRAFT方向盘测试仪-上海爱泽工业设备有限公司 | 内窥镜-工业内窥镜厂家【上海修远仪器仪表有限公司】 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 5L旋转蒸发器-20L-50L旋转蒸发器-上海越众仪器设备有限公司 | 嘉兴泰东园林景观工程有限公司_花箱护栏 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 恒温恒湿试验箱_高低温试验箱_恒温恒湿箱-东莞市高天试验设备有限公司 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 健身器材-健身器材厂家专卖-上海七诚健身器材有限公司 | 上海办公室装修,写字楼装修—启鸣装饰设计工程有限公司 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 小区健身器材_户外健身器材_室外健身器材_公园健身路径-沧州浩然体育器材有限公司 | 海南在线 海南一家| 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 | 温湿度记录纸_圆盘_横河记录纸|霍尼韦尔记录仪-广州汤米斯机电设备有限公司 | 塑料瓶罐_食品塑料瓶_保健品塑料瓶_调味品塑料瓶–东莞市富慷塑料制品有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 热工多功能信号校验仪-热电阻热电偶校验仿真仪-金湖虹润仪表 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 慈溪麦田广告公司,提供慈溪广告设计。 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 |