2012-07-31 129 views
0

我有这个代码更新SQL语句不工作

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 UPDATE语句

确定这里是更多的我的代码是在我的更新按钮后面。

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中工作得很好。我是否需要做更新选择

+0

这将建议没有记录与表中存在的“+ row1 +”键 – 2012-07-31 20:49:45

+0

我可以提到这个声明是与MySQL的工作,但当我切换到postgres它停止工作......我需要做一个更新选择 – rambokayambo 2012-07-31 21:48:36

回答

1

您是否尝试过在SQL查询中使用单引号?我编辑了你的查询试试看

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

你还会得到什么异常吗?

+0

这将无法正常工作。变量不会被追加到字符串中,而会被视为查询字符串中的字符串文字。 – 2012-07-31 20:52:05

+0

是把单引号将变量添加到查询字符串 – rambokayambo 2012-07-31 22:09:05

1

尝试将单引号括在您的值中。

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

单引号不是问题...它与mysql运行良好 – rambokayambo 2012-07-31 21:57:43

+0

我没有得到任何异常....当我试图从数据库中读取再次没有任何反应 – rambokayambo 2012-07-31 22:09:40

0

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

+0

好吧,我会尝试删除单引号,但它与MySQL的工作,它不适用于postgres – rambokayambo 2012-07-31 21:56:42

0

嘿家伙我解决了这个问题。这完全是我的错。当我从数据库中选择并返回一个记录集时,我没有明确指定它将返回的顺序。因此,我的记录集不符合要求,因此它正在执行更新,但是它不是按顺序显示的,因为我的更新显式更新通过earthorientationparametersid。它与更新无关,但与我的网格显示数据的顺序,这就是为什么我不能看到更新