使用spring的jdbcTempl
使用spring的jdbcTemplate用PreparedStatement执行sql的时候,怎么打印最终执行的sql。
这个问题简单。首先你自己创建一个MyJdbcTemplate。继承JdbcTemplate,然后重载下面的两个方法:
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ParameterDisposer;
import org.springframework.jdbc.core.PreparedStatementCallback;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.PreparedStatementSetter;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.support.JdbcUtils;
import org.springframework.util.Assert;
public T query(PreparedStatementCreator psc,
final PreparedStatementSetter pss, final ResultSetExtractor rse)
throws DataAccessException {
Assert.notNull(rse, "ResultSetExtractor must not be null");
logger.debug("Executing prepared SQL query");
return execute(psc, new PreparedStatementCallback() {
public T doInPreparedStatement(PreparedStatement ps)
throws SQLException {
ResultSet rs = null;
try {
if (pss != null) {
pss.setValues(ps);
}
if (logger.isDebugEnabled()) {
logger.debug(ps.toString());
}
rs = ps.executeQuery();
ResultSet rsToUse = rs;
if (getNativeJdbcExtractor() != null) {
rsToUse = getNativeJdbcExtractor().getNativeResultSet(rs);
}
return rse.extractData(rsToUse);
} finally {
JdbcUtils.closeResultSet(rs);
if (pss instanceof ParameterDisposer) {
((ParameterDisposer) pss).cleanupParameters();
}
}
}
});
}
protected int update(final PreparedStatementCreator psc,
final PreparedStatementSetter pss) throws DataAccessException {
logger.debug("Executing prepared SQL update");
return execute(psc, new PreparedStatementCallback() {
public Integer doInPreparedStatement(PreparedStatement ps)
throws SQLException {
try {
if (pss != null) {
pss.setValues(ps);
}
if (logger.isDebugEnabled()) {
logger.debug(ps);
}
int rows = ps.executeUpdate();
if (logger.isDebugEnabled()) {
logger.debug("SQL update affected " + rows + " rows");
}
return rows;
} finally {
if (pss instanceof ParameterDisposer) {
((ParameterDisposer) pss).cleanupParameters();
}
}
}
});
}
然后就会打印最终执行的sql。
如果用spring ioc ,要改配置文件,比如:
怎么将jdbc中的sql打印
这个比较简单,大多说人都知道,呵呵,配置如下:
hibernate.show_sql=true
hibernate.format_sql=false
使用log4jdbc
log4jdbc打印执行的SQL(包括参数)和输出数据(有点想MYSQL的CMD命令执行结果)
log4jdbc是在JDBC层切入,打印出实际执行的SQL语句和数据库返回数据,所以,就算不是使用Hibernate也可以使用,因为涉及数据库JDBC驱动的变更,建议在开发环境使用。
怎样在控制台或者日志打印输出JDBC执行的sql语句
首先配置 log4j日志文件
#mybatis日志范围
log4j.logger.com.nes=TRACE
#ibatis配置
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
2.导入依赖日志包 log4j
org.slf4j
slf4j-log4j12
1.6.4
log4j
log4j
1.2.14
org.slf4j
slf4j-api
1.7.7
1
在JAVA中,使用JDBC访问数据库时可以执行SQL语句完成对数据库造作的是
B Statement
1、创建 Statement 对象
建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法 createStatement 创建,如下列代码段中所示:
Connection con = DriverManager.getConnection(url, "sunny", "");
Statement stmt = con.createStatement();
为了执行 Statement 对象,被发送到数据库的 SQL 语句将被作为参数提供给 Statement 的方法:
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");
2、使用 Statement 对象执行语句
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。
方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。
方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能,所以本概述后面将在单独一节中对其进行介绍。
执行语句的所有方法都将关闭所调用的 Statement 对象的当前打开结果集(如果存在)。这意味着在重新执行 Statement 对象之前,需要完成对当前 ResultSet 对象的处理。
应注意,继承了 Statement 接口中所有方法的 PreparedStatement 接口都有自己的 executeQuery、executeUpdate 和 execute 方法。Statement 对象本身不包含 SQL 语句,因而必须给 Statement.execute 方法提供 SQL 语句作为参数。PreparedStatement 对象并不将 SQL 语句作为参数提供给这些方法,因为它们已经包含预编译 SQL 语句。CallableStatement 对象继承这些方法的 PreparedStatement 形式。对于这些方法的 PreparedStatement 或 CallableStatement 版本,使用查询参数将抛出 SQLException。
3、语句完成
当连接处于自动提交模式时,其中所执行的语句在完成时将自动提交或还原。语句在已执行且所有结果返回时,即认为已完成。对于返回一个结果集的 executeQuery 方法,在检索完 ResultSet 对象的所有行时该语句完成。对于方法 executeUpdate,当它执行时语句即完成。但在少数调用方法 execute 的情况中,在检索所有结果集或它生成的更新计数之后语句才完成。
概述
Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:Statement、PreparedStatement(它从 Statement 继承而来)和 CallableStatement(它从 PreparedStatement 继承而来)。它们都专用于发送特定类型的 SQL 语句: Statement 对象用于执行不带参数的简单 SQL 语句;PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句;CallableStatement 对象用于执行对数据库已存储过程的调用。
Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法;而 CallableStatement 添加了处理 OUT 参数的方法。
有些 DBMS 将已存储过程中的每条语句视为独立的语句;而另外一些则将整个过程视为一个复合语句。在启用自动提交时,这种差别就变得非常重要,因为它影响什么时候调用 commit 方法。在前一种情况中,每条语句单独提交;在后一种情况中,所有语句同时提交。
4、关闭 Statement 对象
Statement 对象将由 Java 垃圾收集程序自动关闭。而作为一种好的编程风格,应在不需要 Statement 对象时显式地关闭它们。这将立即释放 DBMS 资源,有助于避免潜在的内存问题。
spring JdbcTemplate 利用 Log4j 在控制台打印出SQL语句、参数
#jdbcTemplate sql
log4j.logger.org.springframework.jdbc.core=DEBUG, file
log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=TRACE, file
用这两个就可以,这个好像是spring 2.5.*支持,再高的版本没试,只能打印出sql和参数,没有其它的说明,看的有些眼花~~
jdbc执行sql语句怎么实现在console控制台中显示执行过的sql语句
问题要描述清楚,使用什么框架,是hibernate,还是mybatis,或者自己写的数据库连接工具。如果是hibernate,需要在hibernate属性文件中配置hibernate.show_sql=true,或者在hibernate.cfg.xml文件中配置。 如果是mybatis,配置log4j
java中执行sql插入语句怎么弄
1、Connection conn = DriverManager.getConnection(URL,数据库登录名,数据库登录密码);//获得数据库连接。
2、Statement statement = con.createStatement(); //访问数据库。
3、ResultSet resultSet = statement.executeQuery(sql);//执行SQL语句。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
技术应用
1、Android应用
许多的 Android应用都是Java程序员开发者开发。虽然 Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言所编写。相当一部分的手机中都支持JAVA游戏,这就使很多非编程人员都认识了JAVA。
2、在金融业应用的服务器程序
Java在金融服务业的应用非常广泛,很多第三方交易系统、银行、金融机构都选择用Java开发,因为相对而言,Java较安全[39] 。大型跨国投资银行用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目。
3、网站
Java 在电子商务领域以及网站开发领域占据了一定的席位。开发人员可以运用许多不同的框架来创建web项目,SpringMVC,Struts2.0以及frameworks。即使是简单的 servlet,jsp和以struts为基础的网站在政府项目中也经常被用到。
4、嵌入式领域
Java在嵌入式领域发展空间很大。在这个平台上,只需130KB就能够使用Java技术。
5、大数据技术
Hadoop以及其他大数据处理技术很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。
6、高频交易的空间
Java平台提高了这个平台的特性和即使编译,他同时也能够像 C++ 一样传递数据。正是由于这个原因,Java成为的程序员编写交易平台的语言,因为虽然性能不比C++,但开发人员可以避开安全性,可移植性和可维护性等问题。
7、科学应用
Java在科学应用中是很好选择,包括自然语言处理。最主要的原因是因为Java比C++或者其他语言相对其安全性、便携性、可维护性以及其他高级语言的并发性更好。
27. JDBC 提供了三种接口来实现SQL语句的发送执行,( )接口的对象用于执行简单的不带参数的SQL语句。
Statement接口的对象用于执行简单的不带参数的SQL语句。
PrepareStatement接口的对象用于执行带有IN类型参数的预编译过的SQL语句。
CallbleStatement接口的对象用于执行一个数据库的存储过程。
怎么用PreparedStatement打印sql语句 (整个语句)
rosoft.jdbc.base.BasePreparedStateme
jdbc连接数据库sqlserver后怎么执行sql语句
首先确保SQLSERVER服务正在运行,并可以允许远程访问连接
然后按如下步骤进行连接
1.安装JDBC驱动
1)下载JDBC驱动
[www.microsoft.com]
2)执行sqljdbc_4.0.2206.100_chs.exe解压驱动文件
3)拷贝以下目录中的sqljdbc_auth.dll到Windows的System32目录。对x64的机子,x64的dll拷到C:\Windows\System32,x86的dll拷到C:\Windows\SysWOW64目录。
Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\chs\auth\
2.在Java程序中连接SQL Server
classpath中加上安装好的SQL Server jdbc jar包
Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\chs\sqljdbc4.jar
连接SQL Server的JDBC代码
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:54364;databaseName=master;IntegratedSecurity=True";
Connection con = DriverManager.getConnection(url);
在SQL Server Browser服务开启的情况下也可以通过服务名连接
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost\\SQLEXPRESS;databaseName=master;IntegratedSecurity=True";
Connection con = DriverManager.getConnection(url);
3.身份验证模式
SQL Server默认使用Windows身份验证模式,这也是官方推荐的模式,安全性更高。上面的连接例子就是采用的Windows认证。如果要使用混合认证模式,需要下载SQL Server Management Studio,并通过SQL Server Management Studio修改认证模式为混合认证模式。
SQL Server Management Studio的下载地址
[www.microsoft.com]
修改SQL Server认证模式的方法
[technet.microsoft.com](v=sql.105).aspx
混合认证模式下,可以由数据库进行认证,连接时需要提供用户名和密码
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:54364;databaseName=master";
Connection con = DriverManager.getConnection(url,"user","password");
使用spring的jdbcTempl:等您坐沙发呢!