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

出错代码如下

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 (?,?,?,?,?,?,?,?)";

 

 

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

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

 

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值