material horizons几区:JDBC-ODBC-SQL 时 报错![Microsoft][ODBC SQL Server Driver]无效的事务处理状态

来源:百度文库 编辑:高校问答 时间:2024/04/27 16:32:09
我的代码:
package sql;

import java.sql.*;

import java.sql.Connection;

public class SqlTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection con = null;
Statement stmt = null;
PreparedStatement s = null;

try
{
System.out.println("正在连接数据库...");
/*JDBC-ODBC-SQL2000*/
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:tank","sa","");
/*JDBC-SQL2000*/
// String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=client";
// Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
// con=DriverManager.getConnection(url,"sa","");
con.setAutoCommit(false);
System.out.println("已连接到数据库...");
s = con.prepareStatement("insert into user_table values (?,?,?,?)");
//stmt.executeUpdate("insert into user_table values ('12','tank1','111111','普通用户')");
s.setString(1,"11");
s.setString(2,"tank2");
s.setString(3,"111111");
s.setString(4,"普通用户");
s.executeUpdate();
s.setString(1,"12");
s.setString(2,"tank1");
s.setString(3,"111111");
s.setString(4,"普通用户");
s.executeUpdate();
con.commit();
System.out.println("数据插入成功...");
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select user_name from user_table");

while(rs.next())
{
String username = rs.getString("user_name");
System.out.println(username);
}

}
catch(Exception e)
{
try
{
con.rollback();
}
catch(Exception h)
{
System.out.println(h.getMessage());
}
System.out.println(e.getMessage());
}
finally
{
try
{
try
{
System.out.println("关闭s,stmt");
s.close();
stmt.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}

System.out.println("关闭con");
con.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}

}
}

已经commit过的事务,是不能再rollback的,你在执行过commit后又有rollback语句所以出错

装jdbc驱动了么?出什么错误?