我主要想用PreparedStatement
String strSql="insert into tbl_phone values(?)";
String strSql1="update tbl_user set userName=?";
给sql动态赋值,但好像有错,请如果用PreparedStatement来操作具体怎么写

解决方案 »

  1.   


            Statement stmt = connection.createStatement();
            sql = "DELETE FROM my_table WHERE col_string=?";
            PreparedStatement pstmt = connection.prepareStatement(sql);
            pstmt.setString(1, "a string");
            deleteCount = pstmt.executeUpdate();
      

  2.   

    如果是字符串参数
     pstmt.setString(1, "a string"); 
    如果是整形的参数的话
    pstmt.setInt(1, 1); 
      

  3.   

    String strSql="insert into tbl_phone values(?)"; 
    String strSql1="update tbl_user set userName=?"; 
    给sql动态赋值,但好像有错,请如果用PreparedStatement来操作具体怎么写
      

  4.   

     在JavaBean数据库操作中,一项事务是指由一条或多条对数据库更新的sql语句所组成的一个不可分割的工作单元。只有当事务中的所有操作都正常完成了,整个事务才能被提交到数据库,如果有一项操作没有完成,就必须撤消整个事务。我们通过提交commit()或是回滚rollback()来结束事务的操作。关于事务操作的方法都位于接口java.sql.Connection中。   在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的, jdbc api中,可以通过调用setAutoCommit(false) 来禁止自动提交事务。然后就可以把多条更新数据库的sql语句做为一个事务,在所有操作完成之后,调用commit()来进行整体提交。倘若其中一项sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获异常代码块中调用rollback()方法撤消事务。下面是一个例子;  比如:有两张表,一个记录用户帐户(useraccount),一个是系统帐(sysaccount),现在有一个用户要向系统寄钱买东西,就要此行下面两条语句:String sql1 = "update useraccount set monery=monery-1000 where name='username'";String sql2 = "update sysaccount set monery=monery 1000 where name='sysname'";   但如果第一条执行了而第二条语句执行出错了就会造成不良后果。这是就可以用手动提交的方式来防止这种事情的发生:主要代码 try{ . . .  conn=DriverManager.getConnection("..."); //链接数据库  conn.setAutoCommit(false);//禁止自动提交事务  stmt = conn.Create.... String sql1 = "update useraccount set monery=monery-1000 where name='usename'"; String sql2 = "update sysaccount set monery=monery 1000 where name='sysname'";  stmt=conn.createStatement();  stmt.executeUpdate(sql1);  stmt.executeUpdate(sql2);  conn.commit(); //统一提交。 }catch(SQLException e){   conn.rollback(); //倘若其中一项sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获 异常代码块中调用rollback()方法撤消事务。   e.printStackTrace();  }  finally{   if(stmt!=null){    stmt.close();   }   if(conn!=null){    stmt.close();   }  } 
      

  5.   

    为什么没人理解我的意思呢,我是想用PreparedStatement 
    conn.setAutoCommit(false);
    String strSql="insert into tbl_phone values(?)"; 
    String strSql1="update tbl_user set userName=?"; 
    conn.commit(); 
    两条sql语句PreparedStatement(预编译)动态赋值
      

  6.   

    你操作多少表不都那么回事吗String strSql="insert into tbl_phone values(?);update tbl_user set userName=?";然后还是像上面那么调用 
      

  7.   

    你这里只有一句删除操作了,你给后面那个问号赋值,如何还有一句差不多的插入操作,一起进行怎么做
    在定义一个PreparedStatement pstmt = connection.prepareStatement(sql1); 吗。
      

  8.   

    一起都写来,唉,看到我又给你的回复了吗
            Statement stmt = connection.createStatement();
            sql = "insert into tbl_phone values(?);update tbl_user set userName=?";
            PreparedStatement pstmt = connection.prepareStatement(sql);
            pstmt.setString(1, "a string");
            pstmt.setString(2, "b string");
            deleteCount = pstmt.executeUpdate(); 你这样试试嘛
      

  9.   

    把它分成两句行不行
    sql和sql1不写在一起
      

  10.   

    你写一个类,用来存放sql语句和要传的参数,就可以了