0
import java.sql.*;
public class Login
{
    public static void main(String args[]) throws SQLException
    {
        Connection con = null;
        PreparedStatement stmt = null;
        Statement st = null;
        try {
            Driver driver = new oracle.jdbc.driver.OracleDriver();
            DriverManager.registerDriver(driver);
            System.out.println("coneecting to the database:");
            con = DriverManager.getConnection("driverURL","usrr","pass");
            System.out.println("creating statement");
            String sql = "Update abhi SET age = ? WHERE id = ?";
            stmt = con.prepareStatement(sql);
            stmt.setInt(1, 35);
            stmt.setInt(2,102);
            int rows = stmt.executeUpdate();
            S.O.P("rows updated"+rows);
            stmt.close();
            String sql2;
            sql2 = "select * from abhi";
            st = con.createStatement();
            ResultSet rs = st.executeQuery(sql2);
            while(rs.next())
            {
                System.out.println("hi");
                int age = rs.getInt("age");
                System.out.println("age is"+age);
            }
            rs.close();
            stmt.close();
            con.close();
        }
        catch(SQLException e) {
            e.printStackTrace();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            try {
                if (st != null)
                    st.close();
            }
            catch(Exception e) {
                 // nthing to do
            }
            try {
                if(con != null)
                    con.close();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
        System.out.println("good bye johny");
    }
}

これは私のコードであり、エラーなしで完全に実行されています...しかし、私のデータベースでは、値を更新していないので、idが102であるageの値を更新していない理由を理解できません。 。

4

3 に答える 3

0

他の人が述べたように、このような接続コミットを使用してみてください。

import java.sql.*;
public class Login
{
public static void main(String args[]) throws SQLException
{
    Connection con = null;
    PreparedStatement stmt = null;
    Statement st = null;
    try
    {
        Driver driver = new oracle.jdbc.driver.OracleDriver();
        DriverManager.registerDriver(driver);
        System.out.println("coneecting to the database:");

    con = DriverManager.getConnection("driverURL","usrr","pass");       
    con.setAutoCommit(false);
    System.out.println("creating statement");

    String sql = "Update abhi SET age = ? WHERE id = ?";

    stmt = con.prepareStatement(sql);

    stmt.setInt(1, 35);

    stmt.setInt(2,102);

    int rows =    stmt.executeUpdate();

    S.O.P("rows updated"+rows);

    stmt.close();
    con.commit();
    String sql2;

    sql2 = "select * from abhi";

    st = con.createStatement();

    ResultSet rs = st.executeQuery(sql2);

    while(rs.next())
    {
        System.out.println("hi");


        int age = rs.getInt("age");

        System.out.println("age is"+age);
    }

                 rs.close();

    stmt.close();

    con.close();
}

catch(SQLException e)
{
    e.printStackTrace();
}
catch (Exception e)
         {
    e.printStackTrace();    
}
finally
{
    try
    {
        if(st!=null)
            st.close();
    }

    catch(Exception e) 
    {
               // nthing to do

                 }
    try
    {
        if(con!=null)

        con.close();
    }
    catch (Exception e)
    {

                e.printStackTrace();

                 }


         }

       System.out.println("good bye johny");

        }
于 2013-03-10T14:08:56.040 に答える
0

使ってみてください

con.setAutoCommit(false);


con.commit();
于 2013-03-10T10:41:30.670 に答える
0

オラクルでは、

デフォルトのデータベース トランザクション モードは 2 フェーズ コミットです。

つまり、データを挿入または更新した後、

Oracle データベースにデータを永続化するには、操作を明示的にコミットする必要があります。

しかし、ここでは、あなたのコードにコミットは見られませんでした。

コードでこの問題を確認できますか?

使用する必要があります-

con.setAutoCommit(false);コードの先頭に

con.commit(); to commit the data
于 2013-03-10T10:45:17.683 に答える