谁能帮我看看这段程序问题出在哪里?在线等,立即送分!

rainworm 2004-03-23 01:47:06
一段很简单的程序,但总执行不了,抛出的异常提示:
SQLException: [Microsoft][ODBC Microsoft Access Driver]可选的功能未实现
谁能帮我看看,谢谢了!
==============================================================
package test;
import java.sql.*;
class loadIBtestdb {
public static void main (String args[]) {
String strurl="jdbc:odbc:Test";
String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";
Statement stat=null;
Class.forName (driverName);
try {
String name ="fffffffffffff";
String sex ="mail";
String area="fujian";
String idcard="007";
String tel="123456";
String email="xx@163.com";
String comtel="2222123";
String comfax="2220123";
long idx=7;
java.sql.Connection conn = java.sql.DriverManager.getConnection(strurl,"aaa","111");
java.util.Date date = new java.util.Date();
long temp = date.getTime();
java.sql.Date opertime = new java.sql.Date(temp);
PreparedStatement prepstmt = conn.prepareStatement("UPDATE checkid SET name=?,sex=?,area=?,idcard=?,tel=?,email=?,comtel=?,comfax=?,opertime=? WHERE id=?");
prepstmt.setString(1, name);
prepstmt.setString(2, sex);
prepstmt.setString(3, area);
prepstmt.setString(4, idcard);
prepstmt.setString(5, tel);
prepstmt.setString(6, email);
prepstmt.setString(7, comtel);
prepstmt.setString(8, comfax);
prepstmt.setDate(9, opertime);
prepstmt.setLong(10, idx);
System.out.println("success");
prepstmt.executeUpdate();
prepstmt.close();
conn.close();
}
catch(java.sql.SQLException e) {
System.out.println ("连接testdb.gdb数据库失败!");
System.err.println("SQLException: " + e.getMessage());
return;
}
}
}
...全文
28 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainworm 2004-03-23
  • 打赏
  • 举报
回复
已经好用了,我把数据转换成int型就可以了(还是用我原来的驱动程序),感谢楼上朋友的热心帮助,特此结帐!
  • 打赏
  • 举报
回复
package csdn;
import java.sql.*;
import com.microsoft.jdbc.sqlserver.* ;
import com.microsoft.jdbc.base.* ;

public class JDBCTest {
Connection mSQLcon;
Statement stmt;
ResultSet result;
PreparedStatement pstmt ;

/** -------------Database constructor-----------
* constructor takes server providing database
*/
public JDBCTest(String server) throws SQLException {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
// Create the "url"
String url = "jdbc:microsoft:sqlserver://weichengcai:1433;DatabaseName=viso;User=sa;Password=";

// Create a connection through the msql DiverManager
mSQLcon = DriverManager.getConnection(url);
stmt = mSQLcon.createStatement();
} catch (ClassNotFoundException e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}


/** ------------------close-------------
* closes connection to database server
*/
public void close() throws SQLException{
mSQLcon.close();
}


/** -------------makeSQLString-------------
* puts single quotes around String objec
* because queries require single quotes
* around string values
*/
public String makeSQLString (String s) {
String quotedString = new String ("'" + s + "'");
return quotedString;
}


/** ---------------------------select------------------------------
* select takes what field to look for, what table to search, and
* any conditions that limit the search.
*/
public ResultSet select(String what, String table, String conditions) {

try {
result = stmt.executeQuery("SELECT " + what + " FROM " + table + " WHERE " + conditions);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}


/** ------------------- --------select------------------------------
* select takes what field to look for, what table to search, and
* returns a result containing all the information in that table
*/
public ResultSet select(String what, String table) {
try {
result = stmt.executeQuery("SELECT " + what + " FROM " + table);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}

public static void main (String args[]) {
String name ="fffffffffffff";
String sex ="mail";
String area="fujian";
String idcard="007";
String tel="123456";
String email="xx@163";
String comtel="2222123";
String comfax="2220123";
long idx=7;
java.util.Date date = new java.util.Date();
long temp = date.getTime();
java.sql.Date opertime = new java.sql.Date(temp);
try{
JDBCTest obj = new JDBCTest("");
obj.pstmt = obj.mSQLcon.prepareStatement("UPDATE checkid SET name=?,sex=?,area=?,idcard=?,tel=?,email=?,comtel=?,comfax=?,opertime=? WHERE idx=?");

obj.pstmt.setString(1, name);
obj.pstmt.setString(2, sex);
obj.pstmt.setString(3, area);
obj.pstmt.setString(4, idcard);
obj.pstmt.setString(5, tel);
obj.pstmt.setString(6, email);
obj.pstmt.setString(7, comtel);
obj.pstmt.setString(8, comfax);
obj.pstmt.setDate(9, opertime);
obj.pstmt.setLong(10, idx);

obj.pstmt.executeUpdate();
obj.pstmt.close();
ResultSet rs = obj.select("*","checkid");
while( rs.next()){
System.out.println(rs.getString("opertime"));
}
}catch(SQLException e){
e.printStackTrace();
}
}//main

}//:~

你看这就是我修改的程序,好用呀。
  • 打赏
  • 举报
回复
我用JDBC测试了你的程序是好用的。看来确实是jdbc.odbc的问题。
rainworm 2004-03-23
  • 打赏
  • 举报
回复
驱动程序什么的肯定是没有问题的,我觉得应该是sql语句的问题,如果把where后面改成:
WHERE idcard=?,后面相应的语句改成prepstmt.setString(10, idcard);这样程序能执行,因为我数据库里id的类型是长整形的,我在想会不会是这里出了问题,请高手指点!
谢谢了
  • 打赏
  • 举报
回复
用你这个程序改写一个查询的,好不好用?
lhptianma 2004-03-23
  • 打赏
  • 举报
回复
配置odbc时,很容易把驱动程序选错,驱动程序是“microsoft 开头的”,不是“Driver do开头的”!
rainworm 2004-03-23
  • 打赏
  • 举报
回复
重新配置什么意思?我别的程序访问都很正常啊!
凋零的老树 2004-03-23
  • 打赏
  • 举报
回复
ODBC重新配置

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧