有关JDBC 中 Output PreparedStatement 问题(小弟高分急求答案,在线等。)
tenny 2003-12-30 12:47:39 // sample:
// 问题如下:
// 如何取到输出参数 @Identity @Pointer 的值?
// 为什么 stmt.getResultSet()为NULL?
// 有什么方法可以将SqlString 的SQL语句单条的取出来?
import java.sql.*;
import java.*;
public class sqlparamt {
public static void main(String[] args) {
String driverName = "com.jnetdirect.jsql.JSQLDriver"; String sourceURL = "jdbc:JSQLConnect://localhost:1433";
// Load the driver.
try {
// Load the driver class
Class.forName(driverName);
String user = "sa" ;
String password = "";
// Create the connection through the DriverManager
Connection con = DriverManager.getConnection(sourceURL, user, password);
// Define the data source for the driver
String database = "Northwind";
con.setCatalog(database);
/*SqlString = "INSERT INTO Employees (LastName, FirstName, Title, HireDate, ReportsTo, Photo) " +
"Values(@LastName, @FirstName, @Title, @HireDate, @ReportsTo, 0x0);" +
"SELECT @Identity = SCOPE_IDENTITY();" +
"SELECT @Pointer = TEXTPTR(Photo) FROM Employees WHERE EmployeeID = @Identity" */
String sqlcommand = "INSERT INTO Employees (LastName, FirstName, Title, HireDate, ReportsTo, Photo) " + "Values(?,?,?,?,?,?);" +"SELECT ? = SCOPE_IDENTITY();" + "SELECT ? = TEXTPTR(Photo) FROM Employees WHERE EmployeeID = ?";
PreparedStatement stmt = con.prepareStatement(sqlcommand);
stmt.setString(1, "te12321312321") ;
stmt.setString(2,"ddddd");
stmt.setString(3,"12");
stmt.setTimestamp(4, new Timestamp(2003,12,16,12,12,12,12));
stmt.setInt(5,1);
String by = "11";
byte[] bb = by.getBytes();
stmt.setBytes(6,bb);
stmt.setInt(7,0);
stmt.setObject(8,bb);
stmt.setInt(9,0);
stmt.execute();
//stmt.executeQuery();
System.out.println("..more reuslt set is.."+stmt.getResultSet());
System.out.println("..more reuslt set is.." + stmt.getMoreResults() );
System.out.println("..more reuslt set is.." + stmt.getMoreResults() );
stmt.close();
con.close();
}
catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
catch (SQLException sqle){
sqle.printStackTrace();
}
}
}