Java远程访问SQL Server 2008R2数据库

来源:互联网 发布:数据库原理与应用样卷 编辑:程序博客网 时间:2024/06/15 21:25

       原本想在本地安装oracle数据库,以便学习数据库编程,但linux安装oracle非常麻烦,因此,采用远程访问的方式,使用另一台Windows计算机上的SQL Server2008 R2数据库。为方便以后编程时使用,特封装了Java在Linux平台上通过jdbc驱动远程访问SQL Server 2008 R2的类,以供各位参考纠正。

封装的Sql类采用Java的单例模式实现,对外提供方法包括:

1.返回实例方法:Instance(String dbURL,String userName,String userPwd);

2.创建连接方法:Connect();

3.建立查询方法:SqlQuery(String strsql);

4.返回访问数据结果对象方法:resultSet();

5.关闭连接方法:Close();


Sql类

package com.anson.java;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * 使用java单例模式,封装对通过jdbc对sql server远程访问类 * @author anson * */public class Sql {private static Sql sqlObj=null;private final String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";private String dbURL=null;private String userName=null;private String userPwd=null;private Connection connction=null;private Statement statement=null;private ResultSet resultset=null;/** * 私有构造函数 * 构建sql server连接字 * @param dbURL * @param userName * @param userPwd */private Sql(String dbURL,String userName,String userPwd){this.dbURL=dbURL;this.userName=userName;this.userPwd=userPwd;}/** * 提供对外访问方法 * @param dbURL 远程IP及端口,例如“jdbc:sqlserver://100.120.13.72:1433;DatabaseName=MyTestDB” * @param userName 用户名,例如“sa” * @param userPwd 用户密码,例如“123456” * @return Sql类的唯一实例,对象名称sqlObj */public static Sql Instance(String dbURL,String userName,String userPwd){try{if(null==sqlObj){sqlObj=new Sql(dbURL,userName,userPwd);}}catch(Exception e){e.printStackTrace();}return sqlObj;}/** * 提供外部访问数据的方法 * @return ResultSet对象 */public ResultSet resultSet(){return this.resultset;}/** * 创建数据库连接 */public  void Connect(){try{//加载SQL SERVER驱动程序Class.forName(driverName);//建立连接this.connction=DriverManager.getConnection(dbURL, userName, userPwd);this.statement=this.connction.createStatement();} catch (SQLException e){// TODO Auto-generated catch blockSystem.out.println("Error Get Data!");e.printStackTrace();} catch (ClassNotFoundException e){// TODO Auto-generated catch blockSystem.out.print("Error Loading SQLServer Driver!");e.printStackTrace();}}/** * 建立sql查询 * @param strsql 所需编写的sql server查询语句 */public void SqlQuery(String strsql){try{this.resultset=this.statement.executeQuery(strsql);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 关闭链数据科连接 */public void Close(){try{//关闭所有连接this.resultset.close();this.statement.close();this.connction.close();} catch (SQLException e){// TODO Auto-generated catch blocke.printStackTrace();}}}

以下使用Test类测试Sql类的使用,Test类连接的的是另一台主机的SQL Server 2008 R2数据库。再次之前,需事先将该SQL Server 2008 R2配置为可远程访问。


Test类

package com.anson.java;import java.sql.ResultSet;import java.sql.SQLException;public class Test {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubString dbURL="jdbc:sqlserver://100.120.13.72:1433;DatabaseName=MyTestTeachingDB";String userName="sa";String userPwd="123456";Sql sql=Sql.Instance(dbURL, userName, userPwd);sql.Connect();String strsql="select s.sno as 学号,s.sname as 姓名,c.cno as 课程号,c.cname as 课程名,sc.grade as 成绩" +" from student s, student_course sc,course c" +" where s.sno=sc.sno and c.cno=sc.cno";sql.SqlQuery(strsql);try{ResultSet resultSet=sql.resultSet();while(resultSet.next()){System.out.println(resultSet.getString("学号")+""+resultSet.getString("姓名")+" "+resultSet.getString("成绩"));}}catch (SQLException e){// TODO Auto-generated catch blocke.printStackTrace();}}}

测试结果:


(以上为从数据库导出的部分数据截图)


0 0