为什么写不进去数据库?查询可以,插入不行。
 <%@ page import="javabean.connDB" %>
          <%
String id=request.getParameter("id");
session.setAttribute("shangpin",id);
connDB conn=new connDB();       
int rows=conn.executeUpdate("insert into gouwuche values(username='"+session.getAttribute("username")+"' ,teaid='"+id+"')");
ResultSet rs_new=conn.executeQuery("select name,price from tea where id='"+id+"'");
while(rs_new.next()){
String name=rs_new.getString(1);
float price=rs_new.getFloat(2);
%>我的javabean:package javabean;     //将该类保存到com.wgh.DB包中
import java.sql.*;         //导入提供基本的数据库编程服务的包
import java.io.*;         //导入提供与设备无关的输入、输出流支持的包
import java.util.*;      //导入提供实用方法和数据结构的类包
public class connDB {
  public Connection conn = null;  //定义一个Connection对象
  public Statement stmt = null;   //定义一个Statement对象
  public ResultSet rs = null;     //定义一个ResultSet对象
  private static String propFileName = "C:/connDB.properties";  //定义保存properties文件的路径的静态变量
  private static Properties prop = new Properties();          //创建一个Properties对象的实例并实例化该对象
  private static String dbClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";  //保存驱动类的类名的变量
  private static String dbUrl ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Tea";//保存连接数据库的URL地址的变量
  private static String dbUser = "sa";  //保存SQL Server登录用户名的变量
  private static String dbPwd = "123";   //保存SQL Server登录密码的变量
 private static void loadProperty() {
    try {
      prop.load(new FileInputStream(propFileName));  //通过文件输入流对象加载Properties文件
      dbClassName = prop.getProperty("DB_CLASS_NAME");   //读取驱动类的类名
      dbUrl = prop.getProperty("DB_URL",
             "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Tea"); //读取数据库的URL地址
      dbUser = prop.getProperty("DB_USER", "sa");  //读取SQL Server登录用户名
      dbPwd = prop.getProperty("DB_PWD", "123");    //读取SQL Server登录密码
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
 public static Connection getConnection() {
    Connection conn = null;
    loadProperty();   //通过loadProperty方法读取properties文件中的数据库连接所需信息
    try {
      Class.forName(dbClassName).newInstance();  //调用Class的forName方法加载驱动程序
        conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);
    }
    catch (Exception ee) {
      ee.printStackTrace();
    }
    if (conn == null) {
      System.err.println(
          "警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:" +
          dbClassName + "\r\n链接位置:" + dbUrl + "\r\n用户/密码" + dbUser + "/" +
          dbPwd);
    }
    return conn;
  }
 public ResultSet executeQuery(String sql) {
    try {
            conn = getConnection();  //调用getConnection()方法构造Connection对象的一个实例conn
          stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                  ResultSet.CONCUR_READ_ONLY);
          rs = stmt.executeQuery(sql);
    }
    catch (SQLException ex) {
      System.err.println(ex.getMessage());
    }
    return rs;
  }  public int executeUpdate(String sql) {
    int result = 0;
    try {
      conn = getConnection();   //调用getConnection()方法构造Connection对象的一个实例conn
      stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                  ResultSet.CONCUR_READ_ONLY);
      result = stmt.executeUpdate(sql); //执行更新操作
    }
    catch (SQLException ex) {
      result = 0;
    }
    try {
      stmt.close();    //关闭Statement对象
    }
    catch (SQLException ex1) {
    }
    return result;
  }
  public int executeUpdate_id(String sql) {
    int result = 0;
    try {
      conn = getConnection();   //调用getConnection()方法构造Connection对象的一个实例conn
      stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                  ResultSet.CONCUR_READ_ONLY);
      result = stmt.executeUpdate(sql);
      String ID = "select @@IDENTITY as id";
      rs = stmt.executeQuery(ID);
      if (rs.next()) {
        int autoID = rs.getInt("id");
        result = autoID;
      }
    }
    catch (SQLException ex) {
      result = 0;
    }
    return result;
  }
  public void close() {
    try {
      if (rs != null) {
        rs.close();   //关闭ResultSet结果集
      }
    }
    catch (Exception e) {
      e.printStackTrace(System.err);
    }
    try {
      if (stmt != null) {
        stmt.close();   //关闭Statement
      }
    }
    catch (Exception e) {
      e.printStackTrace(System.err);
    }
    try {
      if (conn != null) {
        conn.close();   //关闭Connection
      }
    }
    catch (Exception e) {
      e.printStackTrace(System.err);
    }
  }
}

解决方案 »

  1.   

    catch (SQLException ex) {
      result = 0;
      }
    把异常信息都显示出来啊,可能是你的sql语句错了~~~~
      

  2.   

    你的SQL语句写错了.  你试试不写那个单引号看看.   
      

  3.   

    把你拼的sql语句打印一下,看对不对
      

  4.   

    int rows=conn.executeUpdate("insert into gouwuche values(username='"+session.getAttribute("username")+"' ,teaid='"+id+"')");
    有这么个 添加法??

    int rows=conn.executeUpdate("insert into gouwuche values(?,?,?)");
    或int rows=conn.executeUpdate("insert into gouwuche(username,teaid) values(username,id)");
      

  5.   

    teaid='"+id+"'
    數字類型的 不要加單引號 
      

  6.   

    做有关数据库的,先把sql语句打印出来,然后再查询分析器中执行,看看有没有问题,用这种方法调试挺好的!