【Java开源代码栏目提醒】:网学会员为广大网友收集整理了,Updatability.java,希望对大家有所帮助!
/**
* Tests the ResultSet updatability methods
*/
package testsuite;
import java.sql.*;
public class Updatability
{
//~ Instance/static variables .............................................
static Connection Conn = null;
static ResultSet RS = null;
static Statement Stmt = null;
static String DBUrl = "jdbc:mysql:///test?profileSql=true";
//~ Methods ...............................................................
/**
* DOCUMENT ME!
*
* @param Args DOCUMENT ME!
* @throws Exception DOCUMENT ME!
*/
public static void main(String[] Args)
throws Exception
{
try {
Class.forName("com.
mysql.jdbc.Driver").newInstance();
Conn = DriverManager.getConnection(DBUrl);
Stmt = Conn.createStatement();
System.out.print("Create test data: ");
boolean create_ok = createTestData();
System.out.println(create_ok ? "passed" : "failed");
System.out.println("Selecting result set");
RS = Stmt.executeQuery("SELECT * FROM UPDATABLE ORDER BY pos1");
System.out.println("Modifying result set in-place");
int numCols = RS.getMetaData().getColumnCount();
while (RS.next()) {
System.out.print("Before modification: ");
for (int i = 0; i < numCols; i++) {
System.out.print(RS.getString(i + 1) + ",");
}
System.out.println();
int row_pos = RS.getInt(1);
RS.updateString(3, "New Data" + (100 - row_pos));
RS.updateRow();
System.out.print("After modification: ");
for (int i = 0; i < numCols; i++) {
System.out.print(RS.getString(i + 1) + ",");
}
System.out.println("\n");
}
//
// Insert a new row
//
System.out.println("Inserting new row");
RS.moveToInsertRow();
RS.updateInt(1, 400);
RS.updateInt(2, 400);
RS.updateString(3, "New Data" + (100 - 400));
RS.insertRow();
RS.close();
Stmt.close();
//
// Look for the updated row
//
Stmt = Conn.createStatement();
RS = Stmt.executeQuery("SELECT * FROM UPDATABLE ORDER BY pos1");
boolean data_good = true;
System.out.print("Checking for updates in database: ");
while (RS.next()) {
int row_pos = RS.getInt(1);
if (!RS.getString(3).equals("New Data" + (100 - row_pos))) {
data_good = false;
}
}
RS.close();
if (data_good) {
System.out.println("passed.");
} else {
System.out.println("Failed.");
}
Stmt.close();
Stmt = null;
System.out.println("Checking nullability of result sets...");
Statement stmt = Conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
stmt.executeUpdate("DROP TABLE IF EXISTS test");
stmt.executeUpdate("CREATE TABLE test (ident INTEGER PRIMARY KEY, name TINYTEXT, expiry DATETIME default null)");
stmt.executeUpdate("INSERT INTO test SET ident=1, name='original'");
//Select to get a resultset to work on
ResultSet rs = stmt.executeQuery("SELECT ident, name, expiry FROM test");
//Check that the expiry field was null before we did our update
rs.first();
java.
sql.Date before = rs.getDate("expiry");
if (rs.wasNull()) {
System.out.println("Expiry was correctly SQL null before update");
}
//Update a different field
rs.updateString("name", "Updated");
rs.updateRow();
//Test to see if field has been altered
java.sql.Date after = rs.getDate(3);
if (rs.wasNull())
System.out.println("Bug disproved - expiry SQL null after update");
else
System.out.println("Bug proved - expiry corrupted to '" +
after + "'");
rs.close();
stmt.close();
} catch (SQLException E) {
throw E;
} finally {
if (RS != null) {
try {
RS.close();
} catch (SQLException SQLE) {
}
}
if (Stmt != null) {
try {
Stmt.close();
} catch (SQLException SQLE) {
}
}
if (Conn != null) {
try {
Conn.close();
} catch (SQLException SQLE) {
}
}
}
}
private static boolean createTestData()
throws java.sql.SQLException
{
try {
//
// Catch the error, the table might exist
//
try {
Stmt.executeUpdate("DROP TABLE UPDATABLE");
} catch (SQLException SQLE) {
}
Stmt.executeUpdate("CREATE TABLE UPDATABLE (pos1 int not null, pos2 int not null, char_field VARCHAR(32), PRIMARY KEY (pos1, pos2))");
for (int i = 0; i < 100; i++) {
Stmt.executeUpdate("INSERT INTO UPDATABLE VALUES (" + i +
", " + i + ",'StringData" + i + "')");
}
} catch (SQLException E) {
E.printStackTrace();
return false;
}
return true;
}
}
;