1. JDBC操作Access数据库
http://www.blogjava.net/pixysoft/archive/2007/09/09/143731.html
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=demo.mdb";
Connection con = DriverManager.getConnection(database, "", "");
Statement s = con.createStatement();
s.execute("select ID,NAME,MEMO from DEMO where ID=" + id);
ResultSet rs = s.getResultSet();
if (rs != null)
{
while (rs.next())
{
byte[] image = rs.getBytes(3);
memo = new String(image, "gb2312");
}
}
s.close();
con.close();
2. JDBC系统入门教程:
http://java.sun.com/docs/books/tutorial/jdbc/overview/index.html
http://java.sun.com/docs/books/tutorial/jdbc/basics/transactions.html
使用事务。
When a connection is created, it is in auto-commit mode.
con.setAutoCommit(false);
con.setAutoCommit(false); PreparedStatement updateSales = con.prepareStatement( "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?"); updateSales.setInt(1, 50); updateSales.setString(2, "Colombian"); updateSales.executeUpdate(); PreparedStatement updateTotal = con.prepareStatement( "UPDATE COFFEES SET TOTAL = TOTAL + ? WHERE COF_NAME LIKE ?"); updateTotal.setInt(1, 50); updateTotal.setString(2, "Colombian"); updateTotal.executeUpdate(); con.commit();
con.setAutoCommit(true);
http://www.360doc.com/content/06/1118/14/14474_264128.shtml
http://java.chinaitlab.com/JDBCJDO/734413.html
一种简单JDBC连接池的实现(一)
每申请一个连接(Connection)会在物理网络(如 TCP/IP网络)上建立一个用于通讯的连接,在此连接上还可以申请一定数量的Statement.
http://java.chinaitlab.com/JDBCJDO/734416.html
一种简单JDBC连接池的实现(二)
http://www.cnblogs.com/pony/archive/2008/11/17/1335227.html
java 获取表结构
DatabaseMetaData dbmd = con.getMetaData();
rs = dbmd.getColumns(con.getCatalog(), schema, tableName, null);
rs.getString(DATA_TYPE) java.sql.Types 的 SQL 类型
rs.getString(COLUMN_SIZE) 列的大小。对于 char 或 date 类型,列的大小是最大字符数,对于 numeric 和 decimal 类型,列的大小就是精度。
rs.getString(DECIMAL_DIGITS) 小数部分的位数
m_DBMetaData = m_Connection.getMetaData();
ResultSet tableRet = m_DBMetaData.getTables(null, "%",m_TableName,new String[]{"TABLE"});
3. 提取表的名字。
while(tableRet.next) System.out.println(tableRet.getString("TABLE_NAME"));
通过getString("TABLE_NAME"),就可以获取表的名字了。
从这里可以看出,前面通过getTables的接口的返回,JDBC是将其所有的结果,保存在一个类似table的内存结构中,而其中TABLE_NAME这个名字的字段就是每个表的名字。
4. 提取表内的字段的名字和类型
String columnName;
String columnType;
ResultSet colRet = m_DBMetaData.getColumns(null,"%", m_TableName,"%");
while(colRet.next()) {
columnName = colRet.getString("COLUMN_NAME");
columnType = colRet.getString("TYPE_NAME");
int datasize = colRet.getInt("COLUMN_SIZE");
int digits = colRet.getInt("DECIMAL_DIGITS");
int nullable = colRet.getInt("NULLABLE");
System.out.println(columnName+" "+columnType+" "+datasize+" "+digits+" "+
nullable);
}
JDBC里面通过getColumns的接口,实现对字段的查询。跟getTables一样,"%"表示所有任意的(字段),而m_TableName就是数据表的名字。
http://blog.csdn.net/alihoo/archive/2008/06/23/2578252.aspx
ResultSet pkRSet = dbMeta.getPrimaryKeys(null, null, "Comment");while( pkRSet.next() ) {
System.err.println("****** Comment ******");
System.err.println("TABLE_CAT : "+pkRSet.getObject(1));
System.err.println("TABLE_SCHEM: "+pkRSet.getObject(2));
System.err.println("TABLE_NAME : "+pkRSet.getObject(3));
System.err.println("COLUMN_NAME: "+pkRSet.getObject(4));
System.err.println("KEY_SEQ : "+pkRSet.getObject(5));
System.err.println("PK_NAME : "+pkRSet.getObject(6));
System.err.println("****** ******* ******");
}