使用DBUtils连接Sqlserver插入失败的问题

使用DBUtils连接Sqlserver插入失败的问题

帅宏军

一、问题描述:

使用DBUtils对数据库Sqlserver进行插入操作时,失败,提示参数“?”不可识别。代码如下

		public void insert(Customer customer) {
		String sql = "insert into customer values(?,?,?,?,?,?,?,?,?)";

		Object[] args = { CustomerUtils.getID(), customer.getName(),
				customer.getGender(), customer.getBirthday(),
				customer.getCellphone(), customer.getEmail(),
				customer.getPreference(), customer.getType(),
				customer.getDescription() };

		// 在执行这段代码时就出错了
		QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());

		try {
			queryRunner.update(sql, args);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

问题原因发现是sqlserver的jdbc驱动在判断占位符类型的时候有问题;具体的就是获得ParameterMetaData的时候出了问题,这个时候可以用一个knowParaType的参数避免这个问题,就是在创建 QueryRunner的时候,提供一个true参数。
二、解决方法

附上代码

		public void insert(Customer customer) {
		String sql = "insert into customer values(?,?,?,?,?,?,?,?,?)";

		Object[] args = { CustomerUtils.getID(), customer.getName(),
				customer.getGender(), customer.getBirthday(),
				customer.getCellphone(), customer.getEmail(),
				customer.getPreference(), customer.getType(),
				customer.getDescription() };

		//关键是这句加一个参数true
		QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource(),
				true);

		try {
			queryRunner.update(sql, args);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

转载请注明出处:http://blog.csdn.net/shuaihj/article/details/15378109

时间: 2024-09-19 04:12:27

使用DBUtils连接Sqlserver插入失败的问题的相关文章

SQLServer 2008对视图或函数的更新或插入失败

环境:SQLServer 2008 R2 问题:对视图或函数'XXX'的更新或插入失败,因其包含派生域或常量 域解决 创建视图命令: create view D_S_G(sno,avg_grade) as select sno,avg(grade) from SC group by sno; 原因:视图view不允许修改. 解决:重新创建一个表,结构内容都一样. 执行以下命令: --d_s_t是表名,d_s_g是视图名 select * into d_s_t from d_s_g where 1

jdbc通过1433端口连接sqlserver数据库总是失败

问题描述 jdbc通过1433端口连接sqlserver数据库总是失败 最近在做一个小项目,在android的额产品里塞中直接用jdbc连接本地服务器的sqlserver数据库的时候出现这个错误:"请验证连接属性,并检查 SQL Server 的实例正在主机上运行, 且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接" 在网上查阅了很多资料,server的端口都是1433,IP2也启动了,sql实例也都启动了,server服务也重新启动了,防火墙也关闭了

数据库服务器-c#连接SQLSERVER无法打开登陆所请求的数据库

问题描述 c#连接SQLSERVER无法打开登陆所请求的数据库 源代码是这样的 报错是 数据库服务器已经开了 新手求教~ 解决方案 确认你的用户名密码正确吗,赋予权限了吗 解决方案二: 下面提示很清楚啊!看看用户是否有访问权限, 解决方案三: 登录失败,你的账户对吗,可以访问数据库信息?

sql server 2008-PHPu连接SQLServer问题

问题描述 PHPu连接SQLServer问题 我要实现PHP连接SQLServer,遇到问题,一直连接失败.具体情况如下: 本机:Win2003 SP2,IIS6+fasecgi+PHP5.3,安装有SQLServer 2005. 我想实现用PHP连接其它服务器上的SQLServer 2008. 我已经安装好了Microsoft Drivers for PHP for SQL Server以及Microsoft SQL Server 2008 Native Client(Microsoft SQ

sqlserver-实现qt连接SQLserver实例

问题描述 实现qt连接SQLserver实例 新手一枚,初学QT 项目需要用QT连接SQLserver ,求实例学习学习! 补充:windows 平台,QT版本5.2.1 SQL版本2000 坐等大神来 解决方案 QString strDriver = QString("DRIVER={SQL SERVER};SERVER=%1;DATABASE=%2").arg("192.168.0.112").arg("testDBName"); QSqlD

.net连接SQLSERVER数据库,网页上不停的刷新就报错"ExecuteScalar 要求已打开且可用的连接。连接的当前状态为打开。"

问题描述 .net连接SQLSERVER数据库,网页上定时刷新就报错"ExecuteScalar要求已打开且可用的连接.连接的当前状态为打开."实在找不出问题出在哪了,请大家帮帮忙吧"/Web"应用程序中的服务器错误.--------------------------------------------------------------------------------ExecuteScalar要求已打开且可用的连接.连接的当前状态为打开.说明:执行当前Web

请问为什么c#打开sqlserver数据库失败?代码如图

问题描述 请问为什么c#打开sqlserver数据库失败?代码如图 请问为什么c#打开sqlserver数据库失败?代码如图 解决方案 连接本机应该是 Server=.; 你的缺少了等号. 解决方案二: 看你的代码,最可能出问题的是连接字符串,看下你的的数据库是否使用集成验证,以及是否允许远程连接. 解决方案三: 数据库的连接字符串有问题, 如下是.NET 类库中数据库连接源代码,你可以参照一下格式和字符串 /// /// 可以接受三种格式的数据库连接字符串 /// 1. 服务名称=(local

有关jsp在windows下的配置及连接SQLServer数据库的详解

js|server|sqlserver|window|数据|数据库|详解 最近在学习jsp,有关jsp的运行环境的配置问题着实让我费了不少功夫,环境配置好了,连接SQL Sever 2000数据库时又出了不少问题,鉴于此我把自己配置这两方面的详细步骤给大家共享一下,希望刚刚接触jsp的并立志在jsp方面有所成就的同仁少走一些弯路,让我共同进步.有希望与我交流的请加我qq:26544472(在验证信息中请注明jsp交流) (一)有关jsp在windows下的配置: Sun推出的JSP(Java S

Java通过JDBC连接SQLServer 2008出现的问题

环境:SQLServer 2008 R2 + MyEclipse 6.5 + JDK 1.6.24 问题:Java通过JDBC连接SQLServer 2008,出现如下问题:java.sql.SQLException: No suitable driver found forjdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=QQ. 解决:检查连接数据库时写的 代码是否有问题. 代码如下: package com.qq.client.db