java JDBC 学习

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) 小数部分的位数

 

2. 下面就是获取表的信息。 
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(nullnull, "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("****** ******* ******"); 

  }  

 

 

 

 

 

 

 

 

posted @ 2010-07-03 20:19    阅读(921)  评论(0编辑  收藏  举报
IT民工