0

私はこのコードを持っています

earthid は主キーであり、これは正確な行が更新されていることを確認するために使用するものです。

int row=jTable1.getSelectedRow();
String sql="UPDATE TB_EARTHORIENTATIONPARAMETER SET  year="+year1+",        month="+month1+",  day="+day1+",  mjd="+mjd1+",ut1utcdelta="+Ut1utc+" WHERE (earthid="+row1+")";

それでも、このステートメントを実行しても何も起こりません....データベースは新しい値で更新されません.SQL更新ステートメントの何が問題なのかわかりません

ここに私の更新ボタンの背後にある私のコードの詳細があります。

jTable1.getModel().addTableModelListener(jTable1);
    DefaultTableModel model=(DefaultTableModel)jTable1.getModel();

    int row=jTable1.getSelectedRow();
    int row1=row+1;
    int column=0;
    String years="";
    String months="";
    String days="";
    String mjds="";
    String ut1utc="";
    int year1;
    int month1;
    int day1;
    double mjd1;
           double Ut1utc;


    while(column!=7)
    {

        Object year=model.getValueAt(row, column);
        years=year.toString();
        year1=Integer.parseInt(years);

        column++;
        Object Month=model.getValueAt(row, column);
        months=Month.toString();
        month1=Integer.parseInt(months);
        column++;
        Object Day=model.getValueAt(row, column);
        days=Day.toString();
        day1=Integer.parseInt(days);
        column++;
        Object MJD=model.getValueAt(row, column);
        mjds=MJD.toString();
        mjd1=Double.parseDouble(mjds);
        column++;
        Object UT1UTCDELTA=model.getValueAt(row,column);
        ut1utc=UT1UTCDELTA.toString();
        Ut1utc=Double.parseDouble(ut1utc);
        column++;

    try
    {
     DBConnectionclass cm=new DBConnectionclass(); 
     String sql="UPDATE TB_EARTHORIENTATIONPARAMETER SET  year="+year1+",  month="+month1+",  day="+day1+",  mjd="+mjd1+",ut1utcdelta="+Ut1utc+" WHERE (earthorientationparameterid="+row1+")";
     Connection con1=null;
     Statement stmt=null;
     con1=cm.getConnection();    //get a connection object
     stmt=con1.createStatement();
     stmt.executeUpdate(sql);

     //create an instance of the database connection class to create a connection object to beused to conect to database

     //create a statement to process sql query

    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(this, e.getMessage());
    }
    // TOD




    }

これはコードを記述する最良の方法ではありませんが、mysql では問題なく機能しました。更新の選択を行う必要がありますか

4

4 に答える 4

1

SQL クエリ内で一重引用符を使用しようとしましたか? .クエリを編集しましたので、お試しください

String sql="UPDATE TB_EARTHORIENTATIONPARAMETER SET  year='+year1+',        month='+month1+',  day='+day1+',  mjd='+mjd1+',ut1utcdelta='+Ut1utc+' WHERE (earthid='+row1+')";

また、例外が発生していますか?

于 2012-07-31T20:49:36.447 に答える
1

値を一重引用符で囲んでみてください。

String sql="UPDATE TB_EARTHORIENTATIONPARAMETER SET  year='"+year1+"', month='"+month1+"', day='"+day1+"', mjd='"+mjd1+"',ut1utcdelta='"+Ut1utc+"' WHERE (earthid='"+row1+"')";
于 2012-07-31T20:50:17.007 に答える
0

やあみんな私は問題を解決しました。これは完全に私のせいです。データベースからレコードセットを選択して返すときに、どの順序で戻るかを明示的に指定しませんでした。したがって、レコードセットの順序が狂っていたため、更新を実行していましたが、更新が明示的に更新されたため、順序が正しくありませんでした。 earthorientationparametersidによる。それは更新とは何の関係もありませんでしたが、グリッドがデータを表示する順序と関係があり、それが更新を見ることができなかった理由です

于 2012-07-31T23:03:47.067 に答える
0

文字列内の日付パラメーターは、一重引用符で囲む必要があります。私は、earthid が int であり、GUID ではないか、単一引用符も必要であると想定しています。パラメータ化されたクエリを試しましたか? より大きなコード サンプルを投稿できますか?

于 2012-07-31T20:51:32.137 に答える