欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

QueryRunner 查询SQLServer数据库时问题 '?' 附近有语法错误。 Query: insert into equipmen

程序员文章站 2022-03-11 18:44:35
...

出错代码如下

public int SaveNewEquipment(Equipment equipment) throws SQLException {
		QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
			
		String sql = "insert into equipment values(?,?,?,?,?,?,?,?)";
		return qr.update(sql, equipment.getFi_uid(),
								equipment.getFi_group(),
								equipment.getFi_location(),
								equipment.getFi_begindate(),
								equipment.getFi_enddate(),
								equipment.getFi_wateryield(),
								equipment.getFi_waterspeed(),
								equipment.getFi_watertemperature());
	}

 

报的错误如下:


java.sql.SQLException: com.microsoft.sqlserver.jdbc.SQLServerException: '?' 附近有语法错误。 Query: insert into equipment values(?,?,?,?,?,?,?,?) Parameters: [3e5a4a1e-35a2-41e1-94b3-4686b5cd750f, 3e5a4a1e-35a2-41e1-94b3-4686b5cd750f, 229-139-154-85-1, 2018-08-07 19:33:13, 2018-08-07 20:33:13, 20.5, 3.5, 28.5]
 

SQL语句在数据库中新建查询没有任何问题,看似没有错误的语句在QueryRunner下运行报错,查阅网上的一些答案后发现大部分没有用,于是一个个情况实验出结果 

修改后成功的SQL语句

String sql = "insert into equipment (fi_uid,fi_group,fi_location,fi_begindate,fi_enddate,fi_wateryield," + 
				"fi_waterspeed,fi_watertemperature) values (?,?,?,?,?,?,?,?)";

 

QueryRunner 查询SQLServer数据库时问题 '?' 附近有语法错误。 Query: insert into equipmen

 

QueryRunner 查询SQLServer数据库时问题 '?' 附近有语法错误。 Query: insert into equipmen

 重点在这:红色的矩形框为一个英文空格,表名后加一空格,相较于传统的sql语句就是在表名后左括号前加一个英文空格,特别注意的是:表名后不能不跟表中的各列属性,省略将解决不了报错,插入语句一直有问题

有的博客中写到在values后加两个空格或一个空格的,我的实验是可行的,但是必须确保values前的语句有各列属性名以及表名后有一个空格的前提下。

 

结论:相较于传统SQL语句 在插入语句中  表名后多加一个空格 另外 表中各列属性名此时不能省略