日期:2014-05-19  浏览次数:20737 次

用java向access数据库插入数据
我编写了一个数据库操作的程序,可是能读取,但是不能插入数据,求各位大牛帮忙看看啊;
数据库名称为Recipe,路径是F:/recipeDatabase/Database1.accdb,无密码;
数据库包含四个字段:字段一是id,字段二是name(菜名),字段三是price(价格),字段四是cook(厨师名)

代码如下:

package dianCaiXiTong;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
 
public class Server {
 
  public static void main(String args[]){
  Connection con =null;
  Statement stmt = null;
  ResultSet rs = null;
  PreparedStatement sql;
  try{
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
  String strurl ="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+
  "F:/recipeDatabase/Database1.accdb";//数据库地址
  con = DriverManager.getConnection(strurl);
  stmt = con.createStatement();
  rs = stmt.executeQuery("select * from Recipe");
 
  while(rs.next()){
  String id = rs.getString(1); // 获得数据库第一列  
   
  String name = rs.getString(2);  
   
  String price = rs.getString(3);
   
  String cook = rs.getString(4);
   
  System.out.println("ID: " + id); // 输出信息  
   
  System.out.println("菜名: " + name);
   
  System.out.println ("价格:" + price);
   
  System.out.println ("厨师名:" + cook);
  }
  /*
  * 向数据库中插入数据,这个操作总是不能执行,求大神给改改
  */
  sql = con.prepareStatement("insert into Recipe"+"values(?,?,?,?)");
  sql.setInt(1, 15);
  sql.setString(2, "niuRou");
  sql.executeUpdate();
 
  rs.close();
  stmt.close();
  con.close();
  }catch(Exception e){
  e.printStackTrace();
  }
 
  }
}

------解决方案--------------------
不能用mysql吗?不到分钟就能安装好?access这个用的少用.net的写的比较多?
------解决方案--------------------
sql = con.prepareStatement("insert into Recipe"+"values(?,?,?,?)");
sql.setInt(1, 15);
sql.setString(2, "niuRou");
sql.executeUpdate();
============================================
1.你可以试着将insert语句写完整。
2.你用了四个问号,表示你应该传4个参数进去。但实际只传了两个。
3.祝你好运。