请问如何用java编程实现 access导入sqlserver,
我的意思是通过jsp页面,选择access数据库后,提交就导入到sqlserver,
是不是 直接运行sql语句就行?

解决方案 »

  1.   

    package beans;
    import java.sql.*;public class Trans{
      public static void main(String args[]){
        try{
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          Connection conAccess=DriverManager.getConnection  
                  ("jdbc:odbc:dbname","user","password");//dbname为你的access中的数据库
          Statement stmt=conAccess.createStatement();
          ResultSet rs=stmt.executeQuery("select * from tablename");
                      //tablename 为你的access中的数据库中需要转换数据的表
          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
          String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; 
                 //pubs为你的sqlserver2000中的数据库      Connection conSql= DriverManager.getConnection(url,user,password); 
          PreparedStatement pstmt=conSql.prepareStatement("insert into table values(
           ?,?,?,?.....)");//表table 与access中的表的结构,字段应该相同,有多少字段就有
                           //多少问号
          while(rs.next()){
            pstmt.setXXXXX(1,rs.getXXXXX("字段1"));
            pstmt.setXXXXX(2,rs.getXXXXX("字段2"));
               .      //同上面结构的语句,其中'XXXXX'为你的字段的数据类型,自行替换
               .      //有多少个字段(问号)就写多少条这样的语句,即把表中数据全部传输
               .
            pstmt.executeUpdate();
          }
          rs.close();
          stmt.close();
          pstmt.close();
          conAccess.close();
          conSql.close();
        }catch(Exception e){ e.printStackTrace(); }
      }
    }
    将这个类编译后放入你的tomcat5.5中的WEB-INF\classes\beans中,
    在jsp页面中作为bean 来使用,其他的问题你自己解决了,
      

  2.   

    直接运行sql语句就行 是的。寫一下SQL語句就可以了。不難的。
      

  3.   

    在sqlserver中执行insert into SQLServer表 select * from 
    OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from Accee表')
      

  4.   

    /*************导出到Access********************/
    insert into openrowset('Microsoft.Jet.OLEDB.4.0', 
       'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表/*************导入Access********************/
    insert into B表 selet * from openrowset('Microsoft.Jet.OLEDB.4.0', 
       'x:\A.mdb';'admin';'',A表)文件名为参数
    declare @fname varchar(20)
    set @fname = 'd:\test.mdb'
    exec('SELECT a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'',
        '''+@fname+''';''admin'';'''', topics) as a ')SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="f:\northwind.mdb";Jet OLEDB:Database Password=123;User ID=Admin;Password=;')...产品
      

  5.   

    直接写sql语句应该是最简单的了,
      

  6.   

    insert into test select * from 
    OpenRowSet('microsoft.jet.oledb.4.0',';database=d:\x.mdb','select * from test')
    这个不行啊,运行的时候,出现
    服务器: 消息 8101,级别 16,状态 1,行 1
    仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'test' 中为标识列指定显式值。
      

  7.   

    greatsharp(七月流火)
    谢谢你的代码,看了一下,是个办法,把odbc-jdbc换成jdbc驱动
    我已经做了一个导出成文本,在导入的程序,
      

  8.   

    insert into test select * from 
    OpenRowSet('microsoft.jet.oledb.4.0',';database=d:\x.mdb','select * from test')
    这个不行啊,运行的时候,出现
    服务器: 消息 8101,级别 16,状态 1,行 1
    仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'test' 中为标识列指定显式值。这个怎么搞的啊?