当前位置: 技术问答>java相关
jdbc问题!(急)
来源: 互联网 发布时间:2015-08-26
本文导语: 本人用access建了个本地数据库D:QADB.mdb,想在java中通过jdbc连接。 小弟初学java的数据库编程,哪位大虾能从ODBC配置开始给详细的讲讲么? 本人要往answer表中添加记录: Connection con=DriverManager.getConnection"jdbc:odbc:answerdataba...
本人用access建了个本地数据库D:QADB.mdb,想在java中通过jdbc连接。
小弟初学java的数据库编程,哪位大虾能从ODBC配置开始给详细的讲讲么?
本人要往answer表中添加记录:
Connection con=DriverManager.getConnection"jdbc:odbc:answerdatabase","login","password");
con.setAutoCommit(false);
Statement stmt=con.createStatement();
stmt.addBatch("INSERT INTO ANSWER"+"VALUES(question,answer,null)");
stmt.executeBatch();
con.setAutoCommit(true);
stmt.close();
con.close();
可是数据库好象没连上,每次操作都不出错,但是数据库也不增加记录!
是不是Connection写的不对啊,其中answerdatabase是用户数据源!
小弟初学java的数据库编程,哪位大虾能从ODBC配置开始给详细的讲讲么?
本人要往answer表中添加记录:
Connection con=DriverManager.getConnection"jdbc:odbc:answerdatabase","login","password");
con.setAutoCommit(false);
Statement stmt=con.createStatement();
stmt.addBatch("INSERT INTO ANSWER"+"VALUES(question,answer,null)");
stmt.executeBatch();
con.setAutoCommit(true);
stmt.close();
con.close();
可是数据库好象没连上,每次操作都不出错,但是数据库也不增加记录!
是不是Connection写的不对啊,其中answerdatabase是用户数据源!
|
我不是java高手,但根据非java经验
你先 con.setAutoCommit(false);
然后再执行update语句,那么update后的结果不会立刻反映到数据库中,应为autocommit 为 false.
然后,执行完了再con.setAutoCommit(true);那都是白打上去的,还是不会更新到数据库。
你应该改为:
Connection con=DriverManager.getConnection"jdbc:odbc:answerdatabase","login","password");
con.setAutoCommit(false);
Statement stmt=con.createStatement();
stmt.addBatch("INSERT INTO ANSWER VALUES(question,answer,null)");
stmt.executeBatch();
conn1.commit() //check this
stmt.close();
con.close();
或者直接把 con.setAutoCommit(false); 这句去掉
还有你的insert语句为什么用 + 号分开,ANSWER与VALUES之间又没有空格,这样不好吧
你先 con.setAutoCommit(false);
然后再执行update语句,那么update后的结果不会立刻反映到数据库中,应为autocommit 为 false.
然后,执行完了再con.setAutoCommit(true);那都是白打上去的,还是不会更新到数据库。
你应该改为:
Connection con=DriverManager.getConnection"jdbc:odbc:answerdatabase","login","password");
con.setAutoCommit(false);
Statement stmt=con.createStatement();
stmt.addBatch("INSERT INTO ANSWER VALUES(question,answer,null)");
stmt.executeBatch();
conn1.commit() //check this
stmt.close();
con.close();
或者直接把 con.setAutoCommit(false); 这句去掉
还有你的insert语句为什么用 + 号分开,ANSWER与VALUES之间又没有空格,这样不好吧
|
先在“控制面板”-〉“管理工具”-〉数据源(ODBC)-〉用户DSN中添加一个access的数据源(名叫answerdatabase)。
new sun.jdbc.odbc.JdbcOdbcDriver();
Connection conn = DriverManager.getConnection("jdbc:odbc:answerdatabase","login","password");
Statement stmt=conn.createStatement() ;
stmt.executeUpdate("INSERT INTO ANSWER"+"VALUES(question,answer,null)");
stmt.close();
conn.close();
new sun.jdbc.odbc.JdbcOdbcDriver();
Connection conn = DriverManager.getConnection("jdbc:odbc:answerdatabase","login","password");
Statement stmt=conn.createStatement() ;
stmt.executeUpdate("INSERT INTO ANSWER"+"VALUES(question,answer,null)");
stmt.close();
conn.close();
|
给你一个关于jdbc数据库连接的类
package jp.co.nec.JTC;
import java.sql.*;
import java.util.*;
import java.io.*;
public class JTCDBConnectionF implements Serializable{
/* 僐僱僋僔儑儞僆僽僕僃僋僩 */
protected Connection con = null;
/* 僐儞僗僩儔僋僞 */
public JTCDBConnectionF() {
}
public void dbOpen() throws java.lang.Exception{
if (con == null || con.isClosed()) {
String url = "jdbc:oracle:oci8:@apsv";
String user = "scott";
String pass = "tiger";
// 僪儔僀僶偺儘乕僪
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
// 俢俛偵愙懕
con = DriverManager.getConnection(url,user,pass);
// 僩儔儞僓僋僔儑儞僞僀僾偺愝掕
con.setTransactionIsolation( con.TRANSACTION_READ_COMMITTED );
con.setAutoCommit(false);
System.out.println("DB OPEN");
} else {
System.out.println("OPENED DB");
}
}
public JTCerrorF dbClose() {
try {
if (con != null && !con.isClosed()) {
//儘乕儖僶僢僋(惓忢廔椆帪偼close偡傞慜偵忋埵偱僐儈僢僩偡傞偙偲)
con.rollback();
con.close();
System.out.println("DB CLOSE");
} else {
System.out.println("CLOSED DB");
}
}
catch (SQLException se) {
// return new JTCerrorF(se.getErrorCode(),se);
return new JTCerrorF("PD05",se); //DB CLOSE
}
finally {
con = null;
}
return (JTCerrorF)null;
}
}
package jp.co.nec.JTC;
import java.sql.*;
import java.util.*;
import java.io.*;
public class JTCDBConnectionF implements Serializable{
/* 僐僱僋僔儑儞僆僽僕僃僋僩 */
protected Connection con = null;
/* 僐儞僗僩儔僋僞 */
public JTCDBConnectionF() {
}
public void dbOpen() throws java.lang.Exception{
if (con == null || con.isClosed()) {
String url = "jdbc:oracle:oci8:@apsv";
String user = "scott";
String pass = "tiger";
// 僪儔僀僶偺儘乕僪
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
// 俢俛偵愙懕
con = DriverManager.getConnection(url,user,pass);
// 僩儔儞僓僋僔儑儞僞僀僾偺愝掕
con.setTransactionIsolation( con.TRANSACTION_READ_COMMITTED );
con.setAutoCommit(false);
System.out.println("DB OPEN");
} else {
System.out.println("OPENED DB");
}
}
public JTCerrorF dbClose() {
try {
if (con != null && !con.isClosed()) {
//儘乕儖僶僢僋(惓忢廔椆帪偼close偡傞慜偵忋埵偱僐儈僢僩偡傞偙偲)
con.rollback();
con.close();
System.out.println("DB CLOSE");
} else {
System.out.println("CLOSED DB");
}
}
catch (SQLException se) {
// return new JTCerrorF(se.getErrorCode(),se);
return new JTCerrorF("PD05",se); //DB CLOSE
}
finally {
con = null;
}
return (JTCerrorF)null;
}
}
|
呵呵,access只能用JdbcOdbc bridge了,设置odbc数据原指向你的access,然后用jdbcodbc连接