首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将记录插入到同一MySQL架构的不同表中

问将记录插入到同一MySQL架构的不同表中
EN

Stack Overflow用户
提问于 2015-08-03 13:28:28
回答 3查看 53关注 0票数 1

因此,我可以使用以下代码成功地将信息插入一个名为“部件”的表中:

代码语言:javascript
复制
String sql1 = "INSERT INTO parts(PART1, PART2, PART3, PART4, PART5)" + "VALUES(?,?,?,?,?)";

    PreparedStatement prepareStatement = conn.prepareStatement(sql1);

    prepareStatement.setString(1,strarr.StringArray[0][0]);
    prepareStatement.setString(2,strarr.StringArray[0][1]);
    prepareStatement.setString(3,strarr.StringArray[0][2]);
    prepareStatement.setString(4,strarr.StringArray[0][3]);
    prepareStatement.setString(5,strarr.StringArray[0][4]);

    prepareStatement.execute();

但是,当我尝试将一些数据插入到一个不同的表中时,这个表名为subsubparts,其模式与它抛出错误的原因完全相同:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:语法出错;请检查与MySQL服务器版本相对应的手册,以获得接近'2.1、2.2、2.3、2.4、2.5‘值的正确语法(“疾病的$$$Epidemiology\r\n文献海洋”,位于第1行)。

这是在执行preparedStatement的行上。

下面是第二种失败的代码(如果这有帮助的话):

代码语言:javascript
复制
String sql2 = "INSERT INTO subsubparts(2.1, 2.2, 2.3, 2.4, 2.5)" + "VALUES(?,?,?,?,?)";
    PreparedStatement preparedStatement0 = conn.prepareStatement(sql2);

    preparedStatement0.setString(1, strarr.StringArray[2][0]);
    preparedStatement0.setString(2, strarr.StringArray[2][1]);
    preparedStatement0.setString(3, strarr.StringArray[2][2]);
    preparedStatement0.setString(4, strarr.StringArray[2][3]);
    preparedStatement0.setString(5, strarr.StringArray[2][4]);

    preparedStatement0.execute();

更令人困惑的是,在导入com.mysql.jdbc时,if抛出了一个import java.sql.SQLException异常。

任何帮助都是很好的!

EN

回答 3

Stack Overflow用户

发布于 2015-08-03 13:33:49

第二个查询看上去不对:

代码语言:javascript
复制
INSERT INTO subsubparts(2.1, 2.2, 2.3, 2.4, 2.5) VALUES(?,?,?,?,?)

应改为:

代码语言:javascript
复制
INSERT 
INTO subsubparts(FieldName1,FieldName2, FieldName3, FieldName4, FieldName5) 
VALUES(?,?,?,?,?)

如果2.1是列的名称,则必须引用该名称,例如"2.1“

票数 0
EN

Stack Overflow用户

发布于 2015-08-03 13:40:30

如果您的列名是类似于2.1的数字,那么用如下所示的引号来包装它:

代码语言:javascript
复制
String sql2 = "INSERT INTO subsubparts(`2.1`, `2.2`, `2.3`, `2.4`, `2.5`)" 
              + "VALUES(?,?,?,?,?)";
票数 0
EN

Stack Overflow用户

发布于 2015-08-03 13:40:58

我所看到的两个查询之间的主要区别是查询两个在列名中有句点。MySQL不会承认这是-是的。相反,您需要引用每个后排的列名:

代码语言:javascript
复制
(`2.1`, `2.2`, `2.3`, `2.4`, `2.5`)

也可以使用双引号.有关更多细节,请参见关于标识符的MySQL文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31788637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档