文字与更新sql表时的格式字符串错误不匹配 [英] literal does not match format string error on updating sql table

查看:379
本文介绍了文字与更新sql表时的格式字符串错误不匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从JTable检索数据,然后使用它来更新保存在数据库中的sql表.但是,java给了我这个错误,

I am trying to retrieve data from JTable and then use it to update an sql table saved in database. However, java gives me this error,

ORA-01861: literal does not match format string

我尝试包含不同的字符串,并且可以使用,但是在这种情况下,它不能使用. 有人可以帮忙吗? 这是我的代码,

I have tried to include different strings and it worked, but for this case, it does not. Can someone please help? Here's my code,

for(int i=0; i<size; i++)
            {
                Object fname= searchResultTable.getModel().getValueAt(i,0);
                Object lname= searchResultTable.getModel().getValueAt(i,1);
                Object minit= searchResultTable.getModel().getValueAt(i,2);
                Object SSN  = searchResultTable.getModel().getValueAt(i,3);
                Object birthDate=searchResultTable.getModel().getValueAt(i,4);
                Object address = searchResultTable.getModel().getValueAt(i,5);
                Object sex = searchResultTable.getModel().getValueAt(i,6);
                Object salary = searchResultTable.getModel().getValueAt(i,7);
                Object superSSN = searchResultTable.getModel().getValueAt(i,8);
                Object dno = searchResultTable.getModel().getValueAt(i,9);




               // Statement S = conn.createStatement();
               // String query ="UPDATE EMPLOYEE SET fname='"+fname+"', lname='"+lname+"', minit='"+minit+"', ssn='"+SSN+"', bdate='"+birthDate+"', address='"+address+"', sex='"+sex+"', salary='"+salary+"', superssn='"+superSSN+"', dno='"+dno+"' WHERE ssn='"+ssn.get(i)+"' ";
               // query="UPDATE EMPLOYEE set fname='Ray',lname='King' where fname='Ray' and lname='King' ";

                 String query ="UPDATE EMPLOYEE SET fname=?, lname=?, minit=?, ssn=?, bdate=?, address=?, sex=?, salary=?, superssn=?, dno=? WHERE ssn=?";

                try{
                PreparedStatement S = conn.prepareStatement(query);
                S.clearParameters();
                S.setString(1,fname.toString());
                S.setString(2, lname.toString());
                S.setString(3, minit.toString());
                S.setString(4, SSN.toString());
                S.setString(5, birthDate.toString());
                S.setString(6,address.toString());
                S.setString(7, sex.toString());
                S.setString(8, salary.toString());
                S.setString(9, superSSN.toString());
                S.setString(10,dno.toString());
                S.setString(11, ssn.get(i));

                System.out.println(fname+", "+lname+","+salary);

                int count= S.executeUpdate();
                JOptionPane.showMessageDialog(this, "Employee Table Was Updated Successfully");
                }catch(SQLException sqle){System.out.println(sqle.getMessage());}



            }
        }

推荐答案

@dasblinkenlight,您的方式无法编译.

@dasblinkenlight, your way doesn't compile.

这是一种将java格式转换为sql格式的方法,可以肯定使用.

here' a method that converts java format to sql format, it works for sure.

 public String dateToSQLFromat(String javaString)
    {

        String day="", month="", year="";

        int dash=0;
        for(int i=0; i<javaString.length(); i++)
        {

            if(javaString.charAt(i)=='-')
            {
                dash++;
                continue;
            }

            if(dash==0)
            {
            year= year+javaString.charAt(i);

            }
            else if(dash==1)
            month= month+javaString.charAt(i);
            else
            {

                if(javaString.charAt(i)==' ')
                    break;

               day= day+javaString.charAt(i);  
            }
        }


        int myMonth= Integer.parseInt(month);

        switch(myMonth)
        {
            case 1: month="JAN"; break;
            case 2: month="FEB";break;
            case 3: month="MAR"; break;
            case 4: month="APR"; break;
            case 5: month= "MAY"; break;
            case 6: month= "JUN"; break;
            case 7: month= "JUL"; break;
            case 8: month="AUG"; break;
            case 9: month="SEP"; break;
            case 10: month="OCT"; break;
            case 11: month="NOV"; break;
            case 12: month="DEC"; break;
            default: System.out.println("Invalid month!"); break;
        }


        return day+"-"+month+"-"+year;



        }

这篇关于文字与更新sql表时的格式字符串错误不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆