com.microsoft.sqlserver.jdbc.SQLServerException: 索引 7 超出范围。

举报
穆雄雄 发表于 2022/12/16 20:39:26 2022/12/16
【摘要】 今天在做项目的时候,使用的jdbc底层增加,然后出现了个问题,找了好久没有找出来是什么问题,后来在网上查了下,发现别人都说是?写成了中文的了,于是我就返回来看,没看出来,继续找,前前后后折腾了估计有半小时还是找不出来,所有的问题都排除了,又回到了?上,难道真的是我写成了中文的了吗,重新切换输入法输入?的时候发现果然是这里的错,?写成了中文的了,大家以后一定得仔细点,别走我的老路了!下面的代码...

今天在做项目的时候,使用的jdbc底层增加,然后出现了个问题,找了好久没有找出来是什么问题,后来在网上查了下,发现别人都说是?写成了中文的了,于是我就返回来看,没看出来,继续找,前前后后折腾了估计有半小时还是找不出来,所有的问题都排除了,又回到了?上,难道真的是我写成了中文的了吗,重新切换输入法输入?的时候发现果然是这里的错,?写成了中文的了,大家以后一定得仔细点,别走我的老路了!下面的代码:
错误的代码:

public int addAccount(Account account) {
		int rel=0;
		String sql="insert INTO account(name,types,items_id,property_id,money,create_date,bz) " +
				"VALUES(?,?,?,?,?,?,?)";
		List<Object>prams=new ArrayList<Object>();
		prams.add(account.getName());
		prams.add(account.getTypes());
		prams.add(account.getItem_id());
		prams.add(account.getProperty_id());
		prams.add(account.getMoney());
		prams.add(account.getCreate_date());
		prams.add(account.getBz());
		System.out.println(sql);
		try {
			rel=connDbBean.executeUpdate(sql, prams);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			connDbBean.closeAll();
		}
		return rel;
	}

正确的代码:

	public int addAccount(Account account) {
		int rel=0;
		String sql="insert INTO account(name,types,items_id,property_id,money,create_date,bz) " +
				"VALUES(?,?,?,?,?,?,?)";
		List<Object>prams=new ArrayList<Object>();
		prams.add(account.getName());
		prams.add(account.getTypes());
		prams.add(account.getItem_id());
		prams.add(account.getProperty_id());
		prams.add(account.getMoney());
		prams.add(account.getCreate_date());
		prams.add(account.getBz());
		System.out.println(sql);
		try {
			rel=connDbBean.executeUpdate(sql, prams);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			connDbBean.closeAll();
		}
		return rel;
	}

他两的区别就在于sql语句中的问号,前者是中文输入法下的问号,后者是英文输入法下的问号,虽然看起来区别不是很大,但是程序是会报错的!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。