更新sql语句不起作用

时间:2012-07-31 20:45:45

标签: sql-update

我有这个代码

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

4 个答案:

答案 0 :(得分:1)

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

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

你也得到任何例外吗?

答案 1 :(得分:1)

尝试在您的值周围加上单引号。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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