jTDS jdbc驱动

 

Overview

jTDS is an open source 100% pure Java (type 4) JDBC 3.0 driver for Microsoft SQL Server (6.5, 7, 2000, 2005 and 2008) and Sybase (10, 11, 12, 15). jTDS is based on FreeTDS and is currently the fastest production-ready JDBC driver for SQL Server and Sybase. jTDS is 100% JDBC 3.0 compatible, supporting forward-only and scrollable/updateable ResultSets, concurrent (completely independent) Statements and implementing all the DatabaseMetaData and ResultSetMetaData methods. Check out the feature matrix for more details.

Quite a few of the commercial JDBC drivers out there are based on jTDS (or FreeTDS), even if they no longer acknowledge this. jTDS has been tested with virtually all JDBC-based database management tools and is the driver of choice for most of these (recommended for DbVisualizer and SQuirreL SQL, distributed with Aqua Data Studio and DataDino). jTDS is also becoming a common choice for enterprise-level applications: it passes both the J2EE 1.3 certification and Hibernate test suites, and is recommended for JBoss, Hibernate, Atlassian JIRA and Confluence and Compiere.

 

 

Why use jTDS?

jTDS is free software. jTDS is released under the terms of the GNU LGPL, giving you not only the posibility to debug and tweak it to your own liking but also to use it in and distribute it with your free or commercial applications.

The other "free" choices, the JDBC-ODBC bridge and Microsoft's own JDBC driver are not actually free. If you encounter an issue with any of them you won't be able to fix it yourself and response times from both Microsoft and Sun are anything but short. Also, both of them lack functionality (the Microsoft driver implements JDBC 2.0, while the bridge is just a JDBC 1.0 implementation) and have serious stability problems: the bridge crashes the JVM if the ODBC driver has any problem and Microsoft just has no intention of really supporting Java/JDBC.

jTDS is also the most performant JDBC driver for both SQL Server and Sybase. We have an older benchmark result but we strongly encourage you to download any benchmark published by commercial JDBC driver vendors and see for yourself. Here are a couple of benchmarks you could use: JNetDirect's JDBC Performance Benchmark and i-net Software's BenchTest 2.1 for MS SQL Server.

Anyway, just give it a spin. Get the latest one from here and see whether you like it or not.

jTDS feature matrix

Below is the list of features of jTDS 1.2.

Compliance

SQL Server 2005, 2000, 7.0, 6.5 Compliant Yes
Sybase 10, 11, 12, 15 Compliant Yes (not all features available for Sybase)
JDK 1.4, 1.3 and 1.2 Compliant Yes
Sun Certified 100% Pure JavaTM Yes

Feature Summary

Open Source and Freely Distributable Yes
Prepared and Callable Statements Yes
Updateable Result Sets Yes
Scrolling Result Sets Yes
Batch Updates Yes (fully optimized, single request/response)
Statement Pooling Yes
Full Timeout Support Yes
Full Range of Cursor Types Yes
Full BLOB and CLOB Support Yes
BLOB and CLOB Locator Support No
Unlimited Statements per Connection Yes
Generated keys retrieval Yes
Named parameters Yes
Savepoints Yes
Parameter metadata Yes
RowSet implementation No (recommended RowSet implementation: Sun reference implementation 1.0.1)
Metadata caching Yes (configurable on connection creation)

J2EE Support

JNDI Data Sources Yes
Connection Pooling Yes
Connection Pool Implementation No (recommended pool implementations: DBCP and c3p0)
XA Distributed Transactions Yes (experimental)

SQL Server-Specific

Optimized Native Protocol Performance Yes (benchmark results: [1])
Windows Authentication Yes
SQL Server named instances Yes
Ignoring of update counts from triggers Yes
Send String data as ASCII/Unicode Yes
NTEXT, NCHAR and NVARCHAR Support Yes
Named Pipes Yes (using the filesystem locally and jCIFS over the network)
SSL Encryption Yes
Fast Forward-Only Cursors Yes

 

package com.wcg.sqlserver;

import java.sql.*;

public class ConnectURL {

    public static void main(String[] args) {

	// Create a variable for the connection string.
	// String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
	// "databaseName=Test;user=sa;password=pwd";

//	String connString = "jdbc:jtds:sqlserver://localhost/Test";
	String connString = "jdbc:jtds:sqlserver://localhost:1433;databaseName=Test;user=sa;password=pwd;";
	
	// Declare the JDBC objects.
	Connection con = null;
	Statement stmt = null;
	ResultSet rs = null;

	try {
	    // Establish the connection.
	    // Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	    Class.forName("net.sourceforge.jtds.jdbc.Driver");

	    con = DriverManager.getConnection(connString);

	    // Create and execute an SQL statement that returns some data.
	    // String SQL = "SELECT TOP 10 * FROM Person.Contact";

	    String SQL = "SELECT * FROM T";

//	    String sqlInsert = "INSERT INTO t VALUES(N'吴xx111');";
//	    sqlInsert+=sqlInsert;
//	    
	    stmt = con.createStatement();
//
//	    boolean bResult = stmt.execute(sqlInsert);
//	    System.out.println(bResult);
//	    System.out.println(stmt.getUpdateCount());

	    
	    rs = stmt.executeQuery(SQL);

	    // Iterate through the data in the result set and display it.
	    while (rs.next()) {
		System.out.println(rs.getString(1) + " " + rs.getString(2));
	    }

	}

	// Handle any errors that may have occurred.
	catch (Exception e) {
	    e.printStackTrace();
	} finally {
	    if (rs != null)
		try {
		    rs.close();
		} catch (Exception e) {
		}
	    if (stmt != null)
		try {
		    stmt.close();
		} catch (Exception e) {
		}
	    if (con != null)
		try {
		    con.close();
		} catch (Exception e) {
		}
	}
    }
}

  

 

 

posted @ 2012-05-28 21:41  庚武  Views(1176)  Comments(0Edit  收藏  举报