我记得可以用这样的 sql 语句:
String sql = "UPDATE table_name SET column1=:column";
PreparedStatement ps = conn.PrepareStatement(sql);然后可以用 ps 将 :column 设置为指定的值, 但我在 API 中却没查到这样的方法, 该怎么用呢?

解决方案 »

  1.   

    JDBC不直接支持:column格式的,它支持
    UPDATE table_name SET column1=?ps.set(1, "value1")
      

  2.   

    哦, 那完蛋了..
    我要往一个表中插入数据, 大概50个字段啊, 关键在于要插入哪些字段现在还不是很明确, 用 jdbc 的话有没有比较好的便于维护的写法?
      

  3.   

    example:
    String sql="insert into tab values(?,?,?,?,?,?)";pst=con.prepareStatement(sql);
    getParams(pst, params);//自定义参数获取参数列表
    private static void getParams(PreparedStatement pst, String[] params)throws Exception {
    if(params!=null){
    for (int i = 0; i < params.length; i++) {
    pst.setString(i+1, params[i]);
    }
    }
    }
      

  4.   

    先确定一下这 50 个字段的数据类型是否一样?如果都是 varchar 类型的话,那你可得笑死啦,哈哈 :P
      

  5.   

     1.首先在Connection 类中找到获取 PreparedStatement 实例的方法
    PreparedStatement prepareStatement(String sql) 
              Creates a PreparedStatement object for sending parameterized SQL statements to the database. 2.其次在PreparedStatement 类中可以找到多个设置column 值的方法 void setDate(int parameterIndex, Date x) 
              Sets the designated parameter to the given java.sql.Date value using the default time zone of the virtual machine that is running the application. 
     void setDate(int parameterIndex, Date x, Calendar cal) 
              Sets the designated parameter to the given java.sql.Date value, using the given Calendar object. 
     void setDouble(int parameterIndex, double x) 
              Sets the designated parameter to the given Java double value. 
     void setFloat(int parameterIndex, float x) 
              Sets the designated parameter to the given Java float value. 
     void setInt(int parameterIndex, int x) 
              Sets the designated parameter to the given Java int value. 
     void setLong(int parameterIndex, long x) 
              Sets the designated parameter to the given Java long value. 
    3.楼主多学学怎么看Api
      

  6.   

    补充一下 举例
    String sql = "insert into contract_table values(null,?,?)";
    PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1,"username");
    stmt.setString(2,,"password");

    stmt.executeUpdate();
      

  7.   

    巧的很, 我们公司的所有表只有两种数据类型, 要么是 varchar2, 要么是 Date. 两种数据类型都可用字符串赋值, 笑死啦...
      

  8.   

    其实setObject什么类型都可以的
      

  9.   

    50个字段的表。

    要是你这么插入的话
    ParaparedStatement也不是不能办到
    只要注意插入的顺序就行
    要不你就自己写个程序
    给出需要插入的字段号码和内容
    返回一个标准的sql语句这样维护起来可能好