jdbc是sun提供的不是微软
微软提供的是odbc

解决方案 »

  1.   

    没用过就不要乱说。。
    com.microsoft.jdbc.sqlserver.SQLServerDriver
    这是微软自己官方发布的jdbc
    不过用了几天发现很多不爽,再看了网上相关评论都建议用第三方的jdbc
      

  2.   

    不好意思, 我将JDBC驱动 和java.sql接口拢混淆了
      

  3.   

    呵呵,问个问题:
    这样的一段简单的连接sql server 2000开发版(os win2000professinoal)的程序:
    import java.sql.*;
    import java.util.*; 
    import java.text.*;
    import java.io.*;
    public class Jdbcodbc{
    public static void main(String args[]){
    Statement stmt=null;
    ResultSet rs=null;
    Connection conn=null;

    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();   
        String url="jdbc:odbc:pubs";//数据源为pubs
    String db_name="Administrator";
    String db_pwd="";
    conn= DriverManager.getConnection(url,db_name,db_pwd);  String sqlstr="select * from sales";
    stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 
    rs=stmt.executeQuery(sqlstr);
    }catch(Exception e){}
    finally{
    try{
    if(stmt!=null)stmt.close();
    if(rs!=null)rs.close();
    if(conn!=null)conn.close();
    }
    catch(Exception e){}}
    }
    }
    运行后出现错误:Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x6D366658
    Function=[Unknown.]
    Library=D:\j2sdk\jre\bin\client\jvm.dllNOTE: We are unable to locate the function name symbol for the error
          just occurred. Please refer to release documentation for possible
          reason and solutions.
    Current Java thread:
            at sun.jdbc.odbc.JdbcOdbc.setStmtAttrPtr(Native Method)
            at sun.jdbc.odbc.JdbcOdbc.SQLSetStmtAttrPtr(JdbcOdbc.java:4676)
            at sun.jdbc.odbc.JdbcOdbcResultSet.setRowStatusPtr(JdbcOdbcResultSet.jav
    a:4473)
            at sun.jdbc.odbc.JdbcOdbcResultSet.initialize(JdbcOdbcResultSet.java:171
    )
            at sun.jdbc.odbc.JdbcOdbcStatement.getResultSet(JdbcOdbcStatement.java:4
    23)
            - locked <02A321B8> (a sun.jdbc.odbc.JdbcOdbcStatement)
            at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:2
    53)
            at Jdbcodbc.main(Jdbcodbc.java:20)Dynamic libraries:
    0x00400000 - 0x00406000         D:\j2sdk\bin\java.exe
    0x77F80000 - 0x77FFB000         C:\WINNT\System32\ntdll.dll
    0x77D90000 - 0x77DED000         C:\WINNT\system32\ADVAPI32.dll
    0x77E60000 - 0x77F35000         C:\WINNT\system32\KERNEL32.DLL
    0x786F0000 - 0x7875E000         C:\WINNT\system32\RPCRT4.DLL
    0x78000000 - 0x78046000         C:\WINNT\system32\MSVCRT.dll
    0x6D330000 - 0x6D445000         D:\j2sdk\jre\bin\client\jvm.dll
    0x77DF0000 - 0x77E55000         C:\WINNT\system32\USER32.dll
    0x77F40000 - 0x77F7C000         C:\WINNT\system32\GDI32.DLL
    0x77530000 - 0x77560000         C:\WINNT\System32\WINMM.dll
    0x75E00000 - 0x75E1A000         C:\WINNT\System32\IMM32.DLL
    0x10000000 - 0x10019000         C:\WINNT\System32\NVDESK32.DLL
    0x6D1D0000 - 0x6D1D7000         D:\j2sdk\jre\bin\hpi.dll
    0x6D300000 - 0x6D30D000         D:\j2sdk\jre\bin\verify.dll
    0x6D210000 - 0x6D228000         D:\j2sdk\jre\bin\java.dll
    0x6D320000 - 0x6D32D000         D:\j2sdk\jre\bin\zip.dll
    0x6D250000 - 0x6D25A000         D:\j2sdk\jre\bin\JdbcOdbc.dll
    0x1F7F0000 - 0x1F825000         C:\WINNT\System32\ODBC32.dll
    0x76AF0000 - 0x76B2D000         C:\WINNT\system32\comdlg32.dll
    0x77C50000 - 0x77C9A000         C:\WINNT\system32\SHLWAPI.DLL
    0x77B30000 - 0x77BB9000         C:\WINNT\system32\COMCTL32.DLL
    0x78F90000 - 0x791D6000         C:\WINNT\system32\SHELL32.DLL
    0x1F8E0000 - 0x1F8F6000         C:\WINNT\System32\odbcint.dll
    0x41160000 - 0x411D3000         C:\WINNT\System32\SQLSRV32.dll
    0x41090000 - 0x410BD000         C:\WINNT\System32\SQLUNIRL.DLL
    0x777C0000 - 0x777DE000         C:\WINNT\System32\WINSPOOL.DRV
    0x75010000 - 0x75020000         C:\WINNT\system32\MPR.DLL
    0x777E0000 - 0x777E7000         C:\WINNT\system32\VERSION.dll
    0x75950000 - 0x75956000         C:\WINNT\system32\LZ32.DLL
    0x77990000 - 0x77A2B000         C:\WINNT\system32\OLEAUT32.DLL
    0x77A30000 - 0x77B1C000         C:\WINNT\system32\ole32.dll
    0x75100000 - 0x7514F000         C:\WINNT\System32\NETAPI32.DLL
    0x77BC0000 - 0x77BCF000         C:\WINNT\System32\SECUR32.DLL
    0x75150000 - 0x75156000         C:\WINNT\System32\NETRAP.DLL
    0x750E0000 - 0x750F0000         C:\WINNT\System32\SAMLIB.DLL
    0x74FB0000 - 0x74FC3000         C:\WINNT\System32\WS2_32.DLL
    0x74FA0000 - 0x74FA8000         C:\WINNT\System32\WS2HELP.DLL
    0x77930000 - 0x7795A000         C:\WINNT\system32\WLDAP32.DLL
    0x77960000 - 0x77984000         C:\WINNT\System32\DNSAPI.DLL
    0x74FD0000 - 0x74FDA000         C:\WINNT\System32\WSOCK32.DLL
    0x76940000 - 0x76947000         C:\WINNT\System32\NDDEAPI.DLL
    0x0B3B0000 - 0x0B3C6000         C:\WINNT\System32\sqlsrv32.rll
    0x1F840000 - 0x1F85A000         C:\WINNT\System32\odbccp32.dll
    0x74CB0000 - 0x74CC7000         C:\WINNT\System32\DBNETLIB.DLL
    0x75490000 - 0x75494000         C:\WINNT\System32\security.dll
    0x77400000 - 0x77477000         C:\WINNT\System32\crypt32.dll
    0x773F0000 - 0x77400000         C:\WINNT\System32\MSASN1.DLL
    0x782D0000 - 0x782EE000         C:\WINNT\system32\msv1_0.dll
    0x77BD0000 - 0x77BE1000         C:\WINNT\System32\ntdsapi.dll
    0x74CD0000 - 0x74CD7000         C:\WINNT\System32\DBmsLPCn.dll
    0x77900000 - 0x77923000         C:\WINNT\system32\imagehlp.dll
    0x72960000 - 0x7298D000         C:\WINNT\system32\DBGHELP.dll
    0x687E0000 - 0x687EB000         C:\WINNT\System32\PSAPI.DLLLocal Time = Mon Nov 10 22:23:13 2003
    Elapsed Time = 2
    #
    # HotSpot Virtual Machine Error : EXCEPTION_ACCESS_VIOLATION
    # Error ID : 4F530E43505002D5
    # Please report this error at
    # http://java.sun.com/cgi-bin/bugreport.cgi
    #
    # Java VM: Java HotSpot(TM) Client VM (1.4.0_01-b03 mixed mode)
    #
    # An error report file has been saved as hs_err_pid1592.log.
    # Please refer to the file for further information.
    #
    Press any key to continue...
    用jsp运行tomcat会死掉,是什么原因啊?
    请指教!
      

  4.   

    现在我将程序改成这样(用microsoft jdbc连接)
    import java.sql.*;
    import java.util.*; 
    import java.text.*;
    import java.io.*;
    import com.microsoft.jdbc.sqlserver.SQLServerDriver;
    public class Jdbcodbc{
    public static void main(String args[]){
    Statement stmt=null;
    ResultSet rs=null;
    Connection conn=null;

    try{
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
    conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://C-DM9T900L53JDN:1433;DatabaseName=pubs;User=ww;Password=ww"); 
    String sqlstr="select * from sales";
    stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 
    rs=stmt.executeQuery(sqlstr);
    while(rs.next()){
    System.out.println(rs.getString(1));
    }
    }catch(Exception e){
    e.printStackTrace();}
    finally{
    try{
    if(stmt!=null)stmt.close();
    if(rs!=null)rs.close();
    if(conn!=null)conn.close();
    }
    catch(Exception e){}}
    }
    }出现错误:
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用
    户 'ww' 登录失败。原因: 未与信任 SQL Server 连接相关联。
    …………
    我在sql server的企业管理器中添加了用户ww,密码也是ww,为什么还有这样的错误?
    另外我在安装sql server的时候选的是windows验证方式
    但是我用用户Administrator连接数据库也出现同样的错误,是为什么?
    初次用java连接数据库,希望能得到大家帮助。
    谢谢。
      

  5.   

    :)验证模式改为SQL+WINDOWS就可以了。不过我还是不知道,原来的JDBC-ODBC方式为什么会出错
      

  6.   

    不是jdbc-odbc桥
    是微软sqls2000的jdbc driver
    一旦取blob/clob就会有问题
    数据只能取一次,并且必须顺序取
    网上已经不只一个人说这问题了
      

  7.   

    在连接的URL里,你用IP地址验证,而不使用计算机名称验证,然后你再试一试!