jdbc连接(Access、SQLServer)

Java JDBC-ODBC 与Access 的连接、Java直接连接access

步骤如下:

1.加载驱动

2.建立连接

3.创建SQL语句对象

4.SQL运行

5.关闭SQL对象,close连接!

 

与access的连接,主要是在第一步和第二部略有不同,而在第二步有两种方法来实现。而后面的sql语句只要遵循access的语法就行。

 

第一步加载驱动

try {

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//这里只能通过jdbc-odbc的方式,通过jdbc去调用odbc,然后windows操作系统通过odbc去操作access数据库,
   } catch (ClassNotFoundException e) {

e.printStackTrace();

}

如果没有异常产生,说明数据库驱动加载成功,顺便说一下,这个驱动系统已经集成了,所以不用再去导入驱动包

第二步建立连接

Connectionconn=DriverManager.getConnection("jdbc:odbc:studentDatabase");
通过上面的代码,我就取得了这个数据库的连接,其中"jdbc:odbc:studentDatabase"这个字符串很重要,相信大家都知道studentDatabase这个是什么。就是你在windows系统上面建立的ODBC数据源的 用户DSN 或者 系统DSN ,这个DSN 就指向你的access数据库的位置。


这样的话,你的java程序就可以通过JDBC-ODBC来操作你的access数据库,但是这样有个缺点,就是:当我们把这台电脑做的java程序拿到其他电脑上时,我们还得为其他电脑上添加上 ODBC数据源,这样就很麻烦!

所以我们通过第二种方法来实现:

Connectionconn=DriverManager.getConnection("jdbc:odbc:driver={Microsoft AccessDriver (*.mdb)};DBQ=ccboy.mdb");
相信大家对“jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=ccboy.mdb”这个字符串也应该理解,其中ccboy.mdb就是我们的数据库名字,他的位置和我们程序的统计目录下。当然也可以写绝对路径;如下

Connectionconn=DriverManager.getConnection("jdbc:odbc:driver={Microsoft AccessDriver (*.mdb)};DBQ=D:\\Workspaces\\Test02\\ccboy.mdb");
这样的话我们就不用特意去给当前系统添加ODBC数据源,就方便了许多,换句话说我们把程序给了用户,用户只要安装完成后就可以使用了,而不用去关心什么是ODBC,还配置什么的。。。

// 检测数据库连接状况***********

     DatabaseMetaDatadmd=conn.getMetaData();   
     System.out.println("连接的数据库:"+dmd.getURL()); 
     System.out.println("驱动程序:"+dmd.getDriverName());

接下来我们就开始对数据的操作,如创建删除表、更新删除数据、查询记录等。

我这里给出一个在java控制台运行的系统设计:

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class Access {
/**
 * @author CCBOY
 * @param args
 */
 public static void main(String[] args) {
  String DateBase ="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=ccboy.mdb";//也可以使用绝对路径
  //String DateBase = "jdbc:odbc:studentDatabase";//这个需要建立ODBC数据源
  Statement sql = null;
  ResultSet rs = null;
  String tableName = null;
  String tmp = null;
  int num = 0;
  try {
   try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   } catch (ClassNotFoundException e) {
    
    System.out.println("Can not load Jdbc-Odbc BridgeDriver");
    System.err.print("ClassNotFoundException:");
    System.err.println(e.getMessage());
   }
   //****************************
   // JDBC连接操作结束
   //****************************
   Scanner reader =new Scanner(System.in);
   Connection con =DriverManager.getConnection(DateBase, "", "");
   // 检测数据库连接状况***********
     DatabaseMetaDatadmd=con.getMetaData();
    
     System.out.println("连接的数据库:"+dmd.getURL());
    
     System.out.println("驱动程序:"+dmd.getDriverName());
     
   
   sql =con.createStatement();
   System.out.print("输入表名:");
   tableName =reader.nextLine();
   sql
     .executeUpdate("create table "
       + tableName
       + " (id char(3) primary key,namechar(8),age integer,sex char(4),Tel char(20))");
   System.out.println("创建" +tableName + "表成功!");
   System.out.print("载入初始数据中...");
   sql.executeUpdate("insertinto " + tableName
     + " values('001','陈晨',20,'男','15235412541')");
   sql.executeUpdate("insertinto " + tableName
     + " values('002','王朗',21,'男','13726781254')");
   sql.executeUpdate("insertinto " + tableName
     + " values('003','貂禅',22,'女','12926596069')");
   sql.executeUpdate("insertinto " + tableName
     + " values('004','西施',23,'女','15566249660')");
   sql.executeUpdate("insertinto " + tableName
     + " values('005','CCBOY',21,'男','15123342110')");
   sql.executeUpdate("insertinto " + tableName
     + " values('006','韩寒',25,'男','13626512462')");
   System.out.println("...载入完毕!");
   System.out.println("****************************");
   System.out.println("**1.显示表单数据         **");
   System.out.println("**2.插入数据             **");
   System.out.println("**3.修改数据             **");
   System.out.println("**4.删除数据             **");
   System.out.println("**5.退出系统             **");
   System.out.println("**********FYMODE***********");
   for (; num <= 5;)
   {
    System.out.print("请选择.....功能:");
    num =Integer.parseInt(reader.nextLine());
    switch (num) {
    case 1:
     rs =sql.executeQuery("select * from " + tableName);// 执行查询
     System.out.println("显示初始数据:");
     System.out.println("ID  用户名   年龄   性别      电话 ");
     while(rs.next())
     {
      tmp =rs.getString(1) + " " + rs.getString(2) + " "
      +rs.getInt(3) + "     " + rs.getString(4) +"     "
        + rs.getString(5);
      System.out.println(tmp);
     }
     break;
    case 2:
     System.out.print("输入ID:");
     String s1 =reader.nextLine();
     System.out.print("输入用户名:");
     String s2 =reader.nextLine();
     System.out.print("输入年龄:");
     int s3 =Integer.parseInt(reader.nextLine());
     System.out.print("输入性别:");
     String s4 =reader.nextLine();
     System.out.print("输入电话:");
     String s5 =reader.nextLine();
     sql.executeUpdate("insertinto " + tableName + " values('"
       + s1 + "','" + s2 +"'," + s3 + ",'" + s4 + "','"
       + s5 + "')");
     break;
    case 3:
     System.out.print("请输入欲修改的ID:");
     String pro =reader.nextLine();
     System.out.print("输入新的用户名:");
     s2 =reader.nextLine();
     System.out.print("输入新的年龄:");
     s3 =Integer.parseInt(reader.nextLine());
     System.out.print("输入新的性别:");
     s4 =reader.nextLine();
     System.out.print("输入新的电话:");
     s5 =reader.nextLine();
     sql.executeUpdate("update" + tableName + " set name='"
       + s2 + "',age='" + s3 +"',sex='" + s4 + "',Tel='"
       + s5 + "' where id='" + pro+ "'");
     break;
    case 4:
     System.out.print("请输入欲删除的ID:");
     pro =reader.nextLine();
     sql.executeUpdate("deletefrom " + tableName
       + " where id='" + pro +"'");
     break;
    case 5:
     System.out.println("欢迎使用!SeeYou");
     num = 1000;
     break;
    }
   }
   sql.close();
   con.close();
  } catch (SQLException ex) {
   System.out.println("SQLException:");
   while (ex != null) {
    System.out.println("Message:"+ ex.getMessage());
    ex =ex.getNextException();
   }
  } catch (Exception e) {
   System.out.println("IOException");
  }
 }
}


使用上述代码时:需要建立一个ccboy.mdb 数据库放到项目的根目录,或者你指定的路径下。

 

 

 

 

 

 

 

 

 

 

SQL

1、软件安装和帐户设定

1-1、安装“MS Sql Server2005(SP2)” (内置帐户选择本地账户,登陆模式选Windows与SQL混合模式,密码可任设;如果没有设置内置帐户sa的话,请直接使用WinNT登录“SQL Server Management Studio”,选择安全性 → 登录名 → sa → 登录属性,然后设置密码,关闭“SQL Server Management Studio”)

1-2、安装“MyEclipse 6.6.1GA”(或其它版本)

1-3、下载连接驱动包“sqljdbc.jar”

2、设置SQL Server服务器:

2-1、“开始” → “程序” →“Microsoft SQL Server 2005” → “配置工具” → “SQL Server Configuration Manager”(确认“SQL ServerManagement Studio”已关闭)

2-2、“SQL Server 2005 服务”中停止服务“SQLServer (SQLEXPRESS)”(默认是启动状态)

2-3、“SQL Server 2005 网络配置” → “MSSQLSERVER的协议”,启动“TCP/IP”(默认是禁用状态),然后双击“TCP/IP”进入属性设置,在“IP 地址”里,确认“IPAll”中的“TCP 端口”为1433

2-4、“SQL Server 2005 服务”中启动服务“SQLServer (MSSQLSERVER )”(默认是停止状态)

2-5、关闭“SQL ServerConfiguration Manager”(此时可以启动“SQL Server Management Studio”,并用帐户sa、密码登录,SQLServer服务器设置正确的话应该能登录成功)

3、创建测试数据库和表:

启动“SQL Server Management Studio”,并用帐户sa、密码登录(SQLServer服务器设置正确的话应该能登录成功),创建一个数据库JSPTest,内建一个表register

4、创建测试的Java工程和代码

4-1、启动“MyEclipse” →“File” → “New” → “Project” → “Java Project”,命名为Test

4-2、打开Test的“Properties”→ “Java Build Path” → “Libraries” → “Add External JARs” ,选择下载好的连接驱动包“sqljdbc.jar”,然后点击“OK”确定

4-3、创建一个测试类,编写如下代码:

import java.sql.*;
public class Test
{public static void main(String[] args)
{ Connection con=null;
Statement stmt=null;
 ResultSet rs=null;
try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=test","adm","123");
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// con = DriverManager.getConnection("jdbc:odbc:JDBCSQLDemo_JSPTest");
stmt = con.createStatement();
rs = stmt.executeQuery("select * fromregist");
while(rs.next())
{ String strUserName =rs.getString(1); 
System.out.println(strUserName);
}
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
if(con!=null) con.close();
}
catch (Exception e)
{ e.printStackTrace(); }
finally
{ System.out.println("演示完毕!");}
}}


4-4、执行代码,应该显示register表的数据

4-5、代码中注释的部分为ODBC桥连接代码,可以选用

4-6、如果你以前用JDBC连接SQL Server2000的话就要注意了:在SQL Server 2000 中加载驱动和URL路径的语句是

“com.microsoft.jdbc.sqlserver.SQLServerDriver”

“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JSPTest”

而SQL Server 2005 中加载驱动和URL的语句则为

“com.microsoft.sqlserver.jdbc.SQLServerDriver”

“jdbc:sqlserver://localhost:1433;DatabaseName=JSPTest”

注意两者的差异

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值