操作ACCESS数据库时的奇怪问题(50分)

  • 主题发起人 主题发起人 CooKY
  • 开始时间 开始时间
C

CooKY

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在学习JDBC.ODBC连接ACCESS数据库时碰到一个奇怪的问题,
可以用SELECT * FROM .. 进行查询,可是我想INSERT INTO 的时候就失败,插不进去数据库中,语句如下(大概)
sql.executeUpdates("insert into person (name,age) values('王小三',299)");
运行时没有报任何错误,可就是没有插入进去,我试着用OFFICE ACCESS 2000 运行这个SQL语句,结果完全成立,插入成功,谁能告诉我为什么???
 
把王小二邊上的單引號改成雙引號試試
 
sql.executeUpdates('insert into person (name,age) values("王小三",299)');
改引号
 
这条语句没问题呀,你用异常处理看看有什么错误?
如:
try{
....
Statement s=conn.createStatement();
int r=s.executeUpdate("insert into person(name,age) values('王小三',299)");
System.out.println("受影响行数:"+r);
}
catch(SQLException sqle){
System.err.println("Message:"+sqle.getMessage());
System.err.println("SQLState:"+sqle.getSQLState());
}
或者用preparepStatement试试,
PreparedStatement ps=conn.prepareStatement("insert into person(name,age) values(?,?)");
ps.setString(1,"王小三");
ps.setInt(2,299)
ps.executeUpdate();
 
'insert into person (name,age) values('+#39+'王小三'+#39+',299)'
 
不行啊各位大哥,我发现ZRWeng大哥的PREPARTSTATE语句运行也能通过,但是同样解决不了问题呢,
在SQL语句中加“,这样能行么,各位大哥,能不能详细点,有人试过OK的么??
 
不行啊各位大哥,我发现ZRWeng大哥的PREPARTSTATE语句运行也能通过,但是同样解决不了问题呢,
在SQL语句中加“,这样能行么,各位大哥,能不能详细点,有人试过OK的么??
 
不行啊各位大哥,我发现ZRWeng大哥的PREPARTSTATE语句运行也能通过,但是同样解决不了问题呢,
在SQL语句中加“,这样能行么,各位大哥,能不能详细点,有人试过OK的么??

 
如果你的代碼不多話,就把它帖出來,也容易看多了。
 
import java.util.*;
import java.sql.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/
public class running {
public static void main(String[] args)
{
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch (Exception e) {System.out.println(e.toString());};
try{
Connection con=DriverManager.getConnection("jdbc:odbc:access");
Statement sql=con.createStatement();
System.out.println("insert into person (name,age) values(/"万岁/",23)");
sql.executeUpdate("insert into person (name,age) values(/"万岁/",23)");
// sql.executeBatch();
// ResultSet rs=sql.executeQuery("select * from person");
}
catch(Exception e){System.out.println(e.toString());};
}

}
 
name是保留字,换一个试一试
 
怎麼會有一個/,還有就是你的數據字段name是不是可以輸入文字,如果它是整型或浮點型,那根本就是會出錯的。
 
public static void main(String[] args)
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:access");
Statement sql=con.createStatement();
int row=sql.executeUpdate("insert into person (name,age) values('万岁',23)");
System.out.println("Insert row num:"+row);
}
catch (ClassNotFoundException cnfe) {
System.out.println(cnfe);
}
catch(SQLException sqle){
System.out.println(e);
}
}
只要系统DNS,表名没错,不会有问题的!
如果这样也能错,那没什么好说的了!
 
//一定要把stmt和conn关闭否则你的值就不会变化
这个问题 当初也困饶了我很久
package mydata;
import java.sql.*;
public class Bean2
{
public void SearchRooms()
{
Connection con;
Statement stmt;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D://db2.mdb";
con = DriverManager.getConnection(url);
stmt = con.createStatement(1005, 1007);
stmt.executeUpdate("update user set name='123111'");
stmt.close();
//一定要把stmt和conn关闭否则你的值就不会变化
con.close();
//
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args)
{
Bean2 ta=new Bean2();
ta.SearchRooms();
}
}
 
多人接受答案了。
 

Similar threads

后退
顶部