通过 UCanAccess 插入时出现“强制转换的字符值无效”错误
Posted
技术标签:
【中文标题】通过 UCanAccess 插入时出现“强制转换的字符值无效”错误【英文标题】:"invalid character value for cast" error on INSERT via 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 不是字符串,所以这就是为什么我在输出屏幕上看到那个东西......现在它正在为我提供指导
【参考方案1】:
你会得到错误
net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc:::3.0.6 数据异常:强制转换的字符值无效
如果您在字符串值无法转换为数字时尝试通过setString
将值分配给数字列。在您的情况下, [Id] 列几乎可以肯定是数字,但是
pst.setString(1, "a");
正在尝试将值“a”分配给该列,并且“a”无法转换为数字。
【讨论】:
以上是关于通过 UCanAccess 插入时出现“强制转换的字符值无效”错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 UCanAccess 连接到数据库时出现“无效页码 1”错误
尝试与 UCanAccess 连接时出现“未找到合适的驱动程序”错误
Hibernate - 使用 net.ucanaccess.jdbc.UcanaccessDriver 时出现 org.hibernate.MappingException
使用 UCanAccess / jackcess 作为 JDBC 到 MS Acess 数据库时出现 IncompatibleClassChangeError