2016-08-17 57 views
0

,我发现了错误“无效字符值投”错误

net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc ::: 3.0.6数据异常:用于铸铁无效字符值

当我运行这段代码:

package aoa; 
    import java.sql.*; 
    public class Aoa { 


     public static void main(String[] args) { 
      Connection cn; 
     Statement st; 
     ResultSet re; 
     String ID ="username"; 
     String NAME="password"; 


     try{ 

     Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 
     cn=DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\MUHAMMAD SHAHAB\\STUD1.accdb"); 
     st = cn.createStatement(); 
     String q = "INSERT INTO STUD1 ([Id], [Address]) VALUES (?, ?)"; 
    PreparedStatement pst = cn.prepareStatement (q); 
    pst.setString(1, "a"); 
    pst.setString(2, "b"); 
    pst.executeUpdate(); 

     System.out.println("inserted"); }  

     catch(ClassNotFoundException | SQLException e) 
     { 
      System.out.println(e); 
     } 

    }  
    } 

我在做什么错?

+0

也许'id'不是一个字符串?另外如何发布你的完整stacktrace,所以我们可以看到错误是从哪里扔出 –

+0

好吧,我只是要发布完整的stacktrace @Scary Wombat – Mcolo

+0

请同时显示您的'STUD1'表的定义 –

回答

2

您将得到错误

net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc ::: 3.0.6数据异常:用于铸铁

无效字符值,如果你尝试指派当字符串值不能转换为数字时,通过setString将数值转换为数字列。在你的情况下,[ID]列是几乎可以肯定的数字,但

pst.setString(1, "a"); 

试图赋值“a”到该列,而“一”不能转换为数字。

+0

thanx @ Gord Thompson。现在正在工作 – Mcolo