最近做一个模拟的银行储蓄管理系统的时候,需要调用数据库,以及向数据库中读入一些数据。我用的是如下的语句:
   stmt.executeUpdate(INSERT INTO 表名(列名) VALUES(相应的值);
可是我发现,在VALUES后面的值,只能是已经知道了的常量数值或者是字符,而不能带入变量。可是我需要的是用户从键盘舒服一些值,然后在把这些值输入到数据库中,但是我在VALUES后面的参数里面带入了变量,数据库提示出错。怎么样都不可以读入到数据库。
   大家知道这个问题怎么解决么?谢谢你们了!希望大家可以一起进步!
   另外我有一些关于java的高级开发的教程(powerpoint版还有源代码),如果需要的话,大家可以找个空间我上传上去,一起共享啊!!!

解决方案 »

  1.   

    用PreparedStatement,类似操作如下private void insertTemp(String id, String name)
        {        
            PreparedStatement prs;
            try
            {
                prs = conn.prepareStatement("INSERT INTO mytable(id,name) VALUES(?,?));
                prs.setString(1, id);
                prs.setString(2, name);
                rs = prs.executeUpdate();     
            }
            catch(SQLException e)
            {
                // TODO 自动生成 catch 块
                e.printStackTrace();
            }
            
        }好了,赶快结贴吧,我要升级了
      

  2.   

    先把他转成字符串,比如
    sqlcommand= "insert into mytable(id,name) values('"id+"','"+name+"')";
    stmt.executeUpdate(sqlcommand);
      

  3.   

    土豆块,你知道么?你说的那个方法,是对SQL和Oracle等大型数据库可以使用的预备语句,然后我用的是Access数据库,好像不支持上面的预备语句。我先用PreparedStatement试试看,要是可以的话,就给你加分了。
    下面的兄弟,也谢谢你了。你的方法我也会试试看的,一样,要是成功的话,就加。
    再次谢谢上面两位兄弟的“关照”
      

  4.   

    土豆块兄弟,谢谢你的提示。原来是我错了。预备语句对于Access数据库也是适用的。谢谢你了哦。
    还有下面的兄弟,也别委屈了你。