【问题标题】:"invalid character value for cast" error on INSERT via UCanAccess通过 UCanAccess 插入时出现“强制转换的字符值无效”错误
【发布时间】:2016-08-17 02:13:14
【问题描述】:

我收到了错误

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);
        }

    }       
    }

我做错了什么?

【问题讨论】:

  • 也许id 不是字符串?另外如何发布您的完整堆栈跟踪,以便我们可以看到错误是从哪里引发的
  • 好的,我只是要发布完整的堆栈跟踪@Scary Wombat
  • 请同时显示您的STUD1 表的定义
  • 我的输出屏幕我只是向我展示了这个:**net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 数据异常:强制转换的无效字符值 BUILD SUCCESSFUL(总时间:4 秒) ** @ScaryWombat
  • 你是对的@ScaryWombat Id 不是字符串,所以这就是为什么我在输出屏幕上看到那个东西......现在它正在为我提供指导

标签: java ms-access jdbc ucanaccess


【解决方案1】:

你会得到错误

net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc:::3.0.6 数据异常:强制转换的字符值无效

如果您在字符串值无法转换为数字时尝试通过setString 将值分配给数字列。在您的情况下, [Id] 列几乎可以肯定是数字,但是

pst.setString(1, "a");

正在尝试将值“a”分配给该列,并且“a”无法转换为数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-05
    • 2020-05-25
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多