在java中有一SQL语句 
INSERT INTO [dbo].[JobSeekerInfo]
           ([ID]
           ,[UserName]
           ,[UserPassword])
     VALUES
           ({@ID}
           ,{@UserName}
           ,{@UserPassword})
ID,UserName,UserPassword 都有值。我不想用拼接的形式组装sql语句。
我想实现的是用正则表达式或其他方法能将变量名自动替换为” '变量值' ”,请大虾指点。做毕业设计需要,谢谢!

解决方案 »

  1.   

    INSERT INTO ... VALUES(@pam,@pam,@pam)
    这个我的思路是用indexOf函数吧-0-,@开始,“,”结尾,然后截取字符串-0-可能比较复杂的说……
      

  2.   

    PreparedStatement pre=conn.prepareStatement("INSERT INTO [dbo].[JobSeekerInfo](ID,UserName  ,UserPassword) VALUES(?,?,?)");
    pre.setInt(0,ID);
    pre.setString(1,Username);
    pre.setString(2,Userpassword);
      

  3.   

    通过我的处理,现在该问题又变成这样的了:java的类中
    String id="200905232323";
    String a="id";
    我想通过a获取到id的值。也不知道大家能明白的我的意思没。
    就是我知道一个变量的值id为“200905232323”,但是我设了一个变量a,通过字符串处理我能知道a为id,我现在是想获得“200905232323”,但是不能直接用id获取
    各位大虾帮忙!
      

  4.   

    lz看看我是不是理解你意思了?String id="111";
    String username="careers";
    String userpassword="111111";
    String sql="insert into Person(id,username,password) values ('"+id+"','"+username+"','"+userpassword+"')";
      

  5.   


    恩,我是这个意思,但是我有很多这样的语句,我不想通过这样字符串拼接的方法实现。
    INSERT INTO [dbo].[JobSeekerInfo] 
              ([ID] 
              ,[UserName] 
              ,[UserPassword]) 
        VALUES 
              ({@id} 
              ,{@userName} 
              ,{@userPassword}) 
    我现在通过正则表达式截取到了id,userName,userPassword,我已经把id="0000",userName='123',userPassword='123'传过来了,我要用id的值替换掉{@id}
      

  6.   

    PreparedStatement pre=conn.prepareStatement("INSERT INTO [dbo].[JobSeekerInfo](ID,UserName  ,UserPassword) VALUES(?,?,?)"); 
    pre.setInt(0,ID); 
    pre.setString(1,Username); 
    pre.setString(2,Userpassword); 
      

  7.   

    还是有点不太清楚你到底是要成为什么样子的,我理解的是:
    只是简单的
    String sql = "insert into table1 (id,username , password) values ( @id , @username , @password );
    你现在想实现得是通过正则表达式来实现自动能够将你的sql转换为
    insert into table1 (id , username ,password ) values (111 , careers , 11111);
    这种形式 ?不知道我理解的对不对 ,如果是这样的话你可以考虑使用
    [Quote]
    发表于:2009-05-18 10:12:482楼 得分:0
    INSERT INTO ... VALUES(@pam,@pam,@pam)
    这个我的思路是用indexOf函数吧-0-,@开始,“,”结尾,然后截取字符串-0-可能比较复杂的说……
    {/Quote}
    这个方法
      

  8.   


    prepared statement不就ok了吗
      

  9.   

    以前见过一个问题,说是前台textbox输入一个表达式,后台来计算这个表达式的值,但是前台输入了 1+2
    在后台获取的时候实际是一个"1+2"的字符串,你的问题应该是与之差不多的但是我不知道具体链接了你google下吧
      

  10.   

    string sql=@"INSERT INTO [dbo].[JobSeekerInfo] 
              ([ID] 
              ,[UserName] 
              ,[UserPassword]) 
        VALUES 
              ({1} 
              ,{2} 
              ,{3}) 
    ";
    string.format(sql,parm1,parm2,parm3)
      

  11.   

    PreparedStatement pre=conn.prepareStatement("INSERT INTO [dbo].[JobSeekerInfo](ID,UserName  ,UserPassword) VALUES(?,?,?)"); 
    pre.setInt(0,ID); 
    pre.setString(1,Username); 
    pre.setString(2,Userpassword); 
    就是这个
      

  12.   


    String sql = "insert into aa values({0},{1},''{2}'')";
    Object o = new Object[] { new Integer(1), new Integer(2),"3" };
    MessageFormat mf=new MessageFormat(sql);
    System.out.println(mf.format(o));
      

  13.   

    嗯,支持如果不想使用这样的sql语句来操作,就使用开源框架,比如Hibernate。
    如果想用jdbc直接操作数据库的话,拼凑这些sql的过程是没法避免的。
      

  14.   

    我的理解你无非是想实现一个造sql语句的工厂。
    传入对象,参数列表,生成sql语句。
    这只适合简单的应用,也就是没有多表关联关系的情况
      

  15.   

    前面给出了明确答案PreparedStatement 
      

  16.   

    不知道你是在程序中还是在存储过程中使用,如果是存储过程中需要用SP_EXECUTESQL