当前位置: 首页 > 知识库问答 >
问题:

UCANAccess::4.0.2意外令牌:164更新查询

鲜于子琪
2023-03-14

我需要制作一个Jar来格式化Access数据库中的电话号码,并为此使用了UcanAccess,所有查询都可以正常工作,直到我需要用格式化的电话号码更新数据库列。

public void updatePhonenumberColumn()
{
    try {
        for (int i = 0; i < this.phoneNumbers.size(); i++) {
            String SQL = "UPDATE [" + this.table + "] SET [" + this.phonenumberColumn + "]=" + this.phoneNumbers.get(i) + " WHERE [" + this.id + "]=" + i;
            PreparedStatement preparedStatement = connection.prepareStatement(SQL);
            preparedStatement.executeUpdate();
        }
    } catch (SQLException e) {
        System.err.println(e.getMessage() + "\nErrorcode: " + e.getErrorCode());
    }
}

正如其他文章中所建议的那样,我尝试使用括号,格式化的电话号码被自己存储在ArrayList中,然后我尝试用update语句添加。如果有什么不清楚的,我会努力提供进一步的信息。

    public void updatePhonenumberColumn()
{
    String sql = "SELECT " + this.phonenumberColumn + " FROM " + this.table;

    try {
        Statement statement = connection.createStatement();
        this.resultSet = statement.executeQuery(sql);
        System.out.println(this.resultSet.getFetchSize());
    } catch (SQLException e) {
        System.err.println(e.getMessage() + "\nErrorcode: " + e.getErrorCode());
    }
}
    public void executeQueryPhoneNumber(String tableName, String columnName)
{
    this.actualColumn = columnName;
    this.phonenumberColumn = columnName;
    this.table = tableName;
    try {
        this.query = this.connection.createStatement();
        this.resultSet = query.executeQuery("SELECT " + this.phonenumberColumn + " FROM " + this.table);
        appendItems(this.phoneNumbers, this.resultSet);
    } catch (SQLException e) {
        System.err.println(e.getMessage() + "\nErrorCode: " + e.getErrorCode());
    }

}

我将非常感谢任何想法

共有1个答案

邬令
2023-03-14

“意外标记:164”听起来像您的电话号码中有空格,您的动态SQL失败了。您应该使用参数化查询,如下所示:

String sql = "UPDATE [" + this.table + "] SET [" + this.phonenumberColumn + "]=? WHERE [" + this.id + "]=?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < this.phoneNumbers.size(); i++) {
    preparedStatement.setString(1) = this.phoneNumbers.get(i);
    preparedStatement.setInt(2) = i;
    preparedStatement.executeUpdate();
}
 类似资料:
  • 此查询引发异常: 我尝试用_: Ucanaccess抛出了一个新的错误: null 请参见执行查询的以下代码: 第一个查询成功执行,但第二个查询失败。

  • 问题内容: 为什么每次我做时:- 它只是解析很好,但是当我这样做时:- 它给我一个错误,说:- 问题答案: 您要它解析JSON文本(不是)。那是无效的JSON,字符串必须用双引号引起来。 如果要与第一个示例等效:

  • 本文向大家介绍意外的令牌相关面试题,主要包含被问及意外的令牌时的应答技巧和注意事项,需要的朋友参考一下 您的JavaScript表示使用JSONP模式发出Ajax请求(这涉及将元素插入文档中而不是使用XMLHttpRequest)。 您得到的响应是一个XML文档,而不是遵循JSONP模式的JavaScript程序,它类似于: 因为浏览器试图将XML作为JavaScript执行(不是),您会收到错误

  • My HQL: 我收到以下错误: 我是HQL的新手。我想通过代码动态设置间隔值。我设置了等于比较的参数值。我读过http://www.mkyong.com/hibernate/hibernate-parameter-binding-examples/post,但我不知道在没有其他符号的情况下如何设置timeOffSet值。 斯纳克斯。 编辑: 我试过?及其工作良好,但我想用来实现这一点。

  • 我必须获得我的数据库(PostgreSQL)中的所有注册表,并使用不带大小写的。我试过使用标准,但ignoreCase()对我不起作用(我使用的是Hibernate3.6)。 我也尝试过使用ilike方法,但仍然不起作用。 这个版本也是: 因此,当我尝试在Hibernate中使用HQL创建查询时,会出现以下错误: 我的代码如下所示: 我做错了什么?

  • 我在使用Struts2和Hibernate时遇到了以下错误: 我有这个方法: folling代码定义类之间的关系: Contrat类: Paiement类: PeriodePay等级: 此查询在phpMyAdmin中工作良好;你能告诉我出了什么问题吗 编辑1: 我在试着别搞错了: 我在控制台中得到结果: 但是使用jsp我在数据表中得不到结果,也许我必须修复迭代器