SQLException:值的数量不相同

2023-12-03

我使用 Apache Derby 作为嵌入式数据库。

数据库检查.java

该类用于创建表。

package normal;

//This class if s for checking the database. If the database doesn't exists, this class will create one

import java.sql.*;

public class DatabaseCheck
{
    private Connection con;

    public DatabaseCheck()
    {
        createConnection();
        try
        {
            Statement st = con.createStatement();
            st.executeQuery("select * from PhoneData");

            new MainForm();
        }
        catch(Exception e)
        {
            System.out.println(e.getLocalizedMessage());

            if(e.getLocalizedMessage().equals("Schema 'SA' does not exist"))
            {
                try
                {
                PreparedStatement ps = con.prepareStatement("create table PhoneData(ids integer generated always as identity constraint pkId primary key,names varchar(20),mobileNumber1 varchar(20),mobileNumber2 varchar(20),landNumber1 varchar(20),landNumber2 varchar(20),address varchar(100),category varchar(20),nickName varchar(20),email varchar(20),middleName varchar(20),lastName varchar(20),city varchar(20),country varchar(20))");
                ps.execute();

                PreparedStatement ps2 = con.prepareStatement("create table Emails(accountType varchar(10) constraint pk_user primary key,userName varchar(50) ,passwords varchar(50))");
                ps2.execute();

                new MainForm();

                }
                catch(Exception e2)
                {
                    e2.printStackTrace();
                }
            }
        }
        finally
        {
            closeConnection();
        }
    }

     public void createConnection()
    {
        try
        {
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

            con = DriverManager.getConnection("jdbc:derby:PhoneBook;create=true","sa","sasasa");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

      public void closeConnection()
    {
        try
        {
            con.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

创建表后,我使用另一个类中的方法插入数据。

 public void createConnection()
    {
        try
        {
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

            con = DriverManager.getConnection("jdbc:derby:PhoneBook","sa","sasasa");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }



    @Override
    public void closeConnection()
    {
        try
        {
            con.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }



    @Override
    public String insertData(String firstName, String mobileNumber1, String mobileNumber2, String landNumber1, String landNumber2, String streetAddress, String category, String nickName, String email, String middleName, String lastName, String city, String country)
    {
        String resultString="";
        try
        {
            createConnection();

            con.setAutoCommit(false);
            PreparedStatement ps = con.prepareStatement("insert into PhoneData values(?,?,?,?,?,?,?,?,?,?,?,?,?)");
            ps.setString(1, firstName);
            ps.setString(2, mobileNumber1);
            ps.setString(3, mobileNumber2);
            ps.setString(4, landNumber1);
            ps.setString(5,landNumber2);
            ps.setString(6,streetAddress);
            ps.setString(7,category);
            ps.setString(8,nickName);
            ps.setString(9,email);
            ps.setString(10,middleName);
            ps.setString(11,lastName);
            ps.setString(12,city);
            ps.setString(13,country);

            int result = ps.executeUpdate();

            if(result>0)
            {
                resultString =  "Data Entered Successfully";
            }
            else
            {
                resultString =  "Data Enter Failed";
            }
            con.commit();
        }
        catch(SQLException se)
        {
            try
            {
                con.rollback();
                resultString = "Data rollbacked because of an error";
                se.printStackTrace();
            }
            catch(Exception e)
            {
                resultString = "Data insertion failed and rollback failed because of an error";
                e.printStackTrace();
            }
        }
        finally
        {
            closeConnection();
        }

        return resultString;
    }

由于出现以下错误,我从未成功插入任何内容

java.sql.SQLSyntaxErrorException: The number of values assigned is not the same as the number of specified or implied columns.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(Unknown Source)
    at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    at normal.DatabaseHandler.insertData(DatabaseHandler.java:56)
    at normal.InsertForm$InsertDataAction.actionPerformed(InsertForm.java:385)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6504)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6269)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4860)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4686)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2713)
    at java.awt.Component.dispatchEvent(Component.java:4686)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:680)
    at java.awt.EventQueue$4.run(EventQueue.java:678)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.sql.SQLException: The number of values assigned is not the same as the number of specified or implied columns.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
    ... 51 more
Caused by: ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
    at org.apache.derby.impl.sql.compile.InsertNode.bindStatement(Unknown Source)
    at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
    at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
    at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
    ... 45 more
BUILD SUCCESSFUL (total time: 10 seconds)

为什么是这样?


Your INSERT查询不正确,当您使用这种类型的语法时,假设所有字段都必须具有值,并且由于您有一个 auto_incremented 列,因此您没有包含它,这导致它无效。

因此,要更正您的语法,您必须显式声明所有列,例如

INSERT INTO tableName(col1, col2) VALUES (?,?)

如果我没记错的话,你的表中有 14 列PhoneData并且您只为 13 列提供了 13 个值(不包括 auto_increment)ID。您准备好的语句的正确查询应如下所示,

INSERT INTO PhoneData( Names, mobileNumber1,..., country) VALUES (?,?,...,?)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLException:值的数量不相同 的相关文章

随机推荐

  • 使用 3d 数据和参数在 Scipy 中进行曲线拟合

    我正在努力在 scipy 中拟合 3d 分布函数 我有一个 numpy 数组 其中包含 x 和 y 仓中的计数 我试图将其拟合到相当复杂的 3 维分布函数中 该数据适合 26 个参数 这些参数描述了其两个组成群体的形状 我在这里了解到 当我
  • 如何绘制簇内簇内平方和图?

    我有一个 R 的聚类图 同时我想用 wss 图优化聚类的 肘部准则 但我不知道如何为给定的聚类绘制 wss 图 有人会帮助我吗 这是我的数据 Friendly lt c 0 467 0 175 0 004 0 025 0 083 0 004
  • 当我尝试使用异常时,为什么我的代码在 Qt Creator 中使用 -fno-exceptions 进行编译?

    在项目 pro 文件中我指定了 QMAKE CXXFLAGS fno exceptions 但我可以在我的应用程序中抛出异常 对此有什么想法吗 示例 这不应该起作用 但它起作用 include
  • 如何使用准备好的语句制作适当的 mysqli 扩展类?

    我正在尝试扩展 mysqli 类来创建一个帮助器类 该类将抽象出一些复杂性 我想要完成的主要事情之一是利用准备好的语句 我真的不知道从哪里开始 或者如何在一堂课中正确处理输入和输出 另一个问题是我在使用准备好的语句时无法将数据作为数组输出
  • 用表单搜索my​​sqli表并显示结果

    我正在搜索一个表格 其中的结果可能来自 3 个选项 cata catb 或 catc 中的任何一个 然后显示结果 但是我的错误警告不断弹出并且无法显示结果 我被困住了
  • 字符串到 int 的转换和字符串操作 MIPS

    对于我的家庭作业 我需要使用 MIPS 获取前面带有任意字母后跟数字 例如 x123 的输入 然后将数字加 5 然后打印出最终数字 从示例中输出将是 128 data entmsg asciiz Enter a string n ui1 s
  • 如何使用 JSch 和 SFTP 协议检查读取权限?

    我知道有getPermissions 方法 但不知道怎么用 如何使用 JSch 检查用户是否可以读取文件 首先 您通常应该问一个功能性问题 您想要实现什么 以获得有用的答案 您要求实现 技术细节 因此我可能无用的技术答案 SftpATTRS
  • 在 VC++ 中使用 openCV 进行网络摄像机视频流传输

    我从来没有编写过 VC 应用程序 现在我被分配了一个捕获 IP 摄像机并将其保存为硬盘上的文件的任务 我过去两天一直在冲浪 但找不到任何合适的链接或代码 我在网上找到的示例代码捕获网络摄像头 但与使用凭据读取 rtsp 协议上的视频流无关
  • 使用 Dart 下载 PNG 文件(二进制文件)并显示它不起作用

    我有一个 Rest API 我调用它来检索要在我的页面上显示的 PNG 图像 My Code void getProfilePicture var pic id request new HttpRequest request respons
  • PayPal - 使用 php 加密多项目自定义购物车动态结账按钮

    我创建了一个网站 要求我构建一个自定义购物篮以满足业务需求 这一切工作正常 上周我一直在尝试制作一个加密的 使用 PayPal 结帐 按钮 首先我尝试了这个 www x com message 174366 没有超链接 因为我是新用户 抱歉
  • 了解子文件夹中的 Web.config 层次结构

    在我的 Visual Studio Web 项目中是Web config在根 That Web config文件定义了一个网络User and Password用于基本网络身份验证
  • 覆盖特定的第三方 Woocommerce 插件模板

    我正在使用基于 Woocommerce 的插件 名为混合搭配产品 这个插件位于里面 plugins woocommerce mix and match products 此文件夹包含另一个模板文件夹 按照惯例 我复制了 模板将 文件夹放入我
  • 如何验证(泛型(泛型参数))?

    背景 我们真的不需要担心 这是一个源自于的问题构建具有继承性的通用树 我将这个问题作为一个单独的问题来打开 因为这不仅与树问题有关 这更多的是一个通用和类问题 Question 为了更好地用代码来说明 我们有一个Tree类 一个SubTre
  • 打印 Python 函数中输入的参数名称

    我有类似的东西 def myfunc list 当我调用该函数时 我可以输入类似 myfunc List1 有没有办法打印出函数中作为参数输入的列表 就像是 def myfunc list print list name 那会给出 myfu
  • 每个表视图单元格一个计时器

    我想点击表格单元格并启动计时器 每个单元都应该有自己的计时器 我已经成功设置了计时器 但不是独立设置的 当我设置一个计时器时 所有单元格都已设置 func tableView tableView UITableView didSelectR
  • 如何覆盖 Magento 中的默认搜索?

    我正在 Magento 网站上工作 我想编辑默认搜索结果 编辑搜索结果不是编辑搜索结果的外观 而是编辑实际生成的搜索结果 这个想法是 如果 Magento 搜索不返回任何值 那么我需要在自定义表中进行搜索以获取一些相关产品 谁能帮我编辑默认
  • 当allow_url_fopen打开时,php file_get_contents返回null

    我收到警告消息 file get contents 无法打开流权限被拒绝 我已在 php ini 文件中将 all url open 设置为 on 我的 php 文件位于我的 apache 服务器中 它正在尝试从同一台计算机上的 tomca
  • 如何读取/加载带有前导零的 yaml 参数作为字符串?

    如何读取 加载带有前导零的 YAML 参数作为字符串并在 python 3 7 中进行操作 从使用 yaml cpp yaml 1 2 的 C 工具中 我得到一个文本文件 其中包含leading zero 00005 读取 加载这行代码 似
  • 如何在 VB.net 中使用 IMAP 命令从 Gmail.com 服务器获取响应?

    我正在使用 Visual Basic 2010 专业版 我正在开发一个软件 其中一部分是获取 收件箱 电子邮件 但我什至无法从服务器获得响应 我做了这些步骤 确保我的 Gmail com 帐户可以使用 IMAP 我使用的是两步验证方法 因此
  • SQLException:值的数量不相同

    我使用 Apache Derby 作为嵌入式数据库 数据库检查 java 该类用于创建表 package normal This class if s for checking the database If the database do