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

嘿伙计们,我解决了这个问题。这完全是我的错。当我从数据库中选择并返回一个记录集时,我没有明确指定它将返回的顺序。因此我的记录集出现故障,因此它正在执行更新,但我没有按顺序进行,因为我的更新显式更新了通过地球方向参数sid。它与更新无关,而是与我的网格显示数据的顺序有关,这就是我看不到更新的原因

于 2012-07-31T23:03:47.067 回答
0

字符串中的日期参数应该有单引号。我假设 earthid 是一个 int 而不是 GUID,或者也需要单引号。您是否尝试过参数化查询?您可以发布更大的代码示例吗?

于 2012-07-31T20:51:32.137 回答