文字与更新sql表时的格式字符串错误不匹配 [英] literal does not match format string error on updating sql table
本文介绍了文字与更新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屋!
查看全文