PreparedStatement 语句 通过 set..赋值后 如何读取 赋值后的sql语句 toString()可以看到,而且还有一些其它的东西,不只是sql语句 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接通过PreparedStatement类是取不到的。帮楼主up吧,能不能用其中折中的办法来解决。 package com.sunnitech.DBConnect;import java.sql.*;public class DBConnect { public static void main(String args[]) { Connection conn = null; String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://192.168.18.202:3306/test"; String user = "root"; String pwd = ""; try { Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url, user, pwd); String del = "delete from test"; Statement st = conn.createStatement(); st.executeUpdate(del); String sql = "insert into test values(?,?)"; PreparedStatement prst = conn.prepareStatement(sql); prst.setString(1, "\""); prst.setString(2, "2005-01-24 12:12:12"); prst.executeUpdate(); System.out.println(prst.toString()); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from test"); while(rs.next()) { System.out.println(rs.getString(1) + "\n" + rs.getDate(2)); } } catch(Exception e) { System.out.println("Error: " + e.toString()); } System.out.println("Finished!"); }}以上小程序输出为:com.mysql.jdbc.ServerPreparedStatement[1] - insert into test values('\"','2005-01-24 12:12:12')"2005-01-24Finished! System.out.println(prst.toString());对应的内容为com.mysql.jdbc.ServerPreparedStatement[1] - insert into test values('\"','2005-01-24 12:12:12') toString()的话, 不同JDBC DRIVER实现是不一样的,用ORACLE的话好像就打不出来了~~ 用ResultSetMetaData,这个接口可以获取列名、列类型、长度、精度;下面是一个例子,虽然使用Statement,但是对于PrepareStatement也是一样的/** * DBTest.java * 注意:这个程序没有对异常做处理 */import java.sql.*;public class DBTest { public static void main(String args[]) throws Exception { // 1. register db driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); // 2. get connection String url = "jdbc:odbc:ora238"; String user = "callcenter"; String pwd = "callcenter"; Connection conn = DriverManager.getConnection(url, user, pwd); // 3. create statement Statement stmt = conn.createStatement(); // 4. execute sql String sql = "select * from H1_BUSINESS_NOTIFY_TAB"; ResultSet rs = stmt.executeQuery(sql); // 5. get meta data ResultSetMetaData rsMetaData = rs.getMetaData(); // 6. show column name int columnCount = rsMetaData.getColumnCount(); System.out.println("Total " + columnCount + " columns."); // 注意下面的循环是从1开始 for (int i=1; i<=columnCount; ++i) { System.out.print(rsMetaData.getColumnName(i)); System.out.print('\t'); } System.out.println(); // 7. show result data while (rs.next()) { // 注意下面的循环是从1开始 for (int i=1; i<=columnCount; ++i) { System.out.print(rs.getString(i)); System.out.print('\t'); } } // 8. release resource rs.close(); stmt.close(); conn.close(); }} 哈哈 竟然有这么多人对这个问题进行讨论,没关系的 我回去看看PreparedStatement的源码 看看有没有办法 实现,到时大家再来研究哦 toString()的方法对于oracle的jdbc没有用。 SWT文本框中的数字滚动 关于applet写和读 到底怎么写 安全机制?能不能先别说 JTable删除列的问题 请部大虾 大虾你们好,现在我想在JTable加上一列“序号”。请帮忙! 帮忙出个注意 那位由SQL Server 2000的JDBC 2/3驱动程序? 谁知道JAVA证的情况 关于socket概念的理解问题! 问电子版资料(急) 谁知道CachedRowSet的分页序列化怎么用? 如何用java进行选择性删除文件?
public static void main(String args[]) {
Connection conn = null; String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://192.168.18.202:3306/test";
String user = "root";
String pwd = ""; try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url, user, pwd); String del = "delete from test";
Statement st = conn.createStatement();
st.executeUpdate(del); String sql = "insert into test values(?,?)";
PreparedStatement prst = conn.prepareStatement(sql);
prst.setString(1, "\"");
prst.setString(2, "2005-01-24 12:12:12");
prst.executeUpdate();
System.out.println(prst.toString());
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from test"); while(rs.next()) {
System.out.println(rs.getString(1) + "\n" + rs.getDate(2));
}
} catch(Exception e) {
System.out.println("Error: " + e.toString());
} System.out.println("Finished!");
}
}以上小程序输出为:
com.mysql.jdbc.ServerPreparedStatement[1] - insert into test
values('\"','2005-01-24 12:12:12')"
2005-01-24
Finished!
对应的内容为
com.mysql.jdbc.ServerPreparedStatement[1] - insert into test values('\"','2005-01-24 12:12:12')
下面是一个例子,虽然使用Statement,但是对于PrepareStatement也是一样的
/**
* DBTest.java
* 注意:这个程序没有对异常做处理
*/
import java.sql.*;
public class DBTest {
public static void main(String args[]) throws Exception { // 1. register db driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); // 2. get connection
String url = "jdbc:odbc:ora238";
String user = "callcenter";
String pwd = "callcenter";
Connection conn = DriverManager.getConnection(url, user, pwd); // 3. create statement
Statement stmt = conn.createStatement();
// 4. execute sql
String sql = "select * from H1_BUSINESS_NOTIFY_TAB";
ResultSet rs = stmt.executeQuery(sql);
// 5. get meta data
ResultSetMetaData rsMetaData = rs.getMetaData();
// 6. show column name
int columnCount = rsMetaData.getColumnCount();
System.out.println("Total " + columnCount + " columns.");
// 注意下面的循环是从1开始
for (int i=1; i<=columnCount; ++i) {
System.out.print(rsMetaData.getColumnName(i));
System.out.print('\t');
}
System.out.println(); // 7. show result data
while (rs.next()) {
// 注意下面的循环是从1开始
for (int i=1; i<=columnCount; ++i) {
System.out.print(rs.getString(i));
System.out.print('\t');
}
}
// 8. release resource
rs.close();
stmt.close();
conn.close();
}
}