`
king520
  • 浏览: 174709 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
文章分类
社区版块
存档分类
最新评论

JAVA中使用JDBC调用MS SQL存储过程

 
阅读更多

背景:

SQL SERVER2005 JAVA JDK1.4

WEBLOGIC测试环境

当进行一些复杂点的查询时,不愿意使用在java代码中拼复杂的语句,看起来很繁琐。用存储过程是一个不错的解决途径,可以使得代码简洁很多。

SQL PROCEDURE:

JAVA Code

/**

* 进行查询

* @return List

*/

public List getVoteStat(String siteId) {

Session session = null;

List lstResult = new ArrayList();

try {

session = this.getSession();

Connection conn = session.connection();

String sql = "{ call SP_MESSAGE_VOTE_STAT(?) }";

PreparedStatement psmt = conn.prepareCall(sql);

psmt.setString(1, siteId);

//执行视图V_Message_stat

ResultSet rs = psmt.executeQuery();

while (rs.next()) {

Properties prop = new Properties();

//设置变量 带回到前台

prop.setProperty("MESSAGE_CATEGORY", rs.getString("MESSAGE_CATEGORY"));

prop.setProperty("CATEGORY_ID", rs.getString("CATEGORY_ID"));

prop.setProperty("VOTE_NO", rs.getString("vote_no"));

prop.setProperty("VOTE_YES", rs.getString("vote_yes"));

prop.setProperty("SATIFY_ZERO_PERCENT", rs.getString("satify_zero_percent"));

prop.setProperty("SATIFY_ONE_PERCENT", rs.getString("satify_one_percent"));

prop.setProperty("SATIFY_TWO_PERCENT", rs.getString("satify_two_percent"));

prop.setProperty("SATIFY_ZERO", rs.getString("satify_zero"));

prop.setProperty("SATIFY_ONE", rs.getString("satify_one"));

prop.setProperty("SATIFY_TWO", rs.getString("satify_two"));

// System.out.println(rs.getString(0));

lstResult.add(prop);

}

} catch (Exception ex) {

ex.printStackTrace();

} finally {

try {

session.close();

} catch (HibernateException ex) {

ex.printStackTrace();

}

session = null;

}

return lstResult;

}

ALTER PROCEDURE [ezoffice].[SP_MESSAGE_VOTE_STAT]

(

--参数

@v_site_id varchar(30)

)

AS

declare @e_sql nvarchar(2000);

--拼凑SQL语句进行查询

set @e_sql ='SELECT (select top 1 cg.category_title from cms_messagecategory cg

where cg.category_id=TEMP.CATEGORY_ID) as MESSAGE_CATEGORY,CATEGORY_ID, SUM(vote_no) AS vote_no, SUM(vote_yes) AS vote_yes,

CASE SUM(vote_yes) WHEN 0 THEN 0 ELSE CAST(CAST(SUM(manyi) AS decimal(9, 2))/ SUM(vote_yes) AS decimal(9, 2))*100 END AS satify_zero_percent,

CASE SUM(vote_yes) WHEN 0 THEN 0 ELSE CAST(CAST(SUM(yibanmanyi) AS decimal(9, 2))/ SUM(vote_yes) AS decimal(9, 2))*100 END AS satify_one_percent,

CASE SUM(vote_yes) WHEN 0 THEN 0 ELSE CAST(CAST(SUM(bumanyi) AS decimal(9, 2))/ SUM(vote_yes) AS decimal(9, 2))*100 END AS satify_two_percent,

SUM(manyi) AS satify_zero, SUM(yibanmanyi) AS satify_one, SUM(bumanyi) AS satify_two

FROM';

set @e_sql=@e_sql+'(SELECT CASE ISNULL(msg.VOTE_STATUS, ''0'') WHEN ''0'' THEN 1 ELSE 0 END AS vote_no, CASE ISNULL(msg.VOTE_STATUS, ''0'')

WHEN ''1'' THEN 1 ELSE 0 END AS vote_yes, ISNULL(VOTE_RESULT, ''-1'') AS VOTE_RESULT, SITE_ID, CATEGORY_ID,

CASE isnull(msg.vote_result, ''-1'') WHEN ''0'' THEN 1 ELSE 0 END AS manyi,

CASE isnull(msg.vote_result, ''-1'') WHEN ''1'' THEN 1 ELSE 0 END AS yibanmanyi,

CASE isnull(msg.vote_result, ''-1'') WHEN ''2'' THEN 1 ELSE 0 END AS bumanyi

FROM ezoffice.CMS_MESSAGE AS msg

WHERE 1=1';

if @v_site_id is not null begin SET @e_sql=@e_sql+' and msg.site_id='+ @v_site_id; end

set @e_sql=@e_sql+' ) AS TEMP ';

set @e_sql=@e_sql+' GROUP BY CATEGORY_ID ';

execute (@e_sql);

分享到:
评论

相关推荐

    java调用ms sql 存储过程(全)

    在Java编程中,调用Microsoft SQL Server(MS SQL)的存储...这就是Java调用MS SQL存储过程的基本步骤。确保遵循最佳实践,如使用连接池管理数据库连接,以及在生产环境中处理异常和错误,以提高程序的稳定性和性能。

    Java实现调用MySQL存储过程详解

    总的来说,Java通过JDBC调用MySQL存储过程涉及到连接数据库、创建`CallableStatement`、执行存储过程和处理结果。这使得开发者能够在Java应用中灵活地利用数据库提供的强大功能,实现更高效的数据处理。

    JDBC for MS-SQL2000

    在本主题中,我们将深入探讨JDBC在与Microsoft SQL Server 2000(MS-SQL2000)配合使用时的关键知识点。 首先,MS-SQL2000是一款由微软公司开发的关系型数据库管理系统,广泛应用于企业级数据存储和管理。JDBC驱动...

    利用JDBC实现对MS SQL Server数据库的访问 (1).pdf

    - Native API (Partly Java driver):使用本地API,部分Java实现,转换JDBC调用。 - JDBC/Net (Pure Java driver):纯Java实现,通过网络协议与数据库通信。 - Native (Pure Java driver):直接使用数据库的网络...

    ms sql+mysql+oracle 的 jdbc 驱动

    在IT行业中,数据库是数据存储和管理的核心,而Java编程语言通过Java Database Connectivity(JDBC)接口与各种类型的数据库进行交互。本主题将详细讲解针对`MS SQL`、`MySQL`和`Oracle`数据库的JDBC驱动,以及如何...

    JDBC Driver(内附MS SQL Server、Oracle、MySQL的驱动)

    在使用这些JDBC驱动时,你需要在Java代码中加载相应的驱动,建立数据库连接,执行SQL语句,并处理结果集。以下是一个简单的示例: ```java import java.sql.*; public class JDBCDemo { public static void main...

    SQL Server jdbc驱动包

    - 高级特性:如事务控制、存储过程调用、大数据类型支持等。 在实际开发中,确保正确配置JDBC驱动类路径,并在Java代码中加载驱动(例如,`Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")`),...

    MS SQL SERVVER 驱动包 FOR JAVA

    此外,它还包含了一些针对SQL Server特性的函数和处理,如存储过程的调用、XML数据类型的处理、大型对象(LOB)的操作等。 msutil.jar是辅助工具类库,提供了一些实用工具和辅助功能,比如日期时间格式转换、加密...

    Microsoft SQL Server 2000 Driver for JDBC

    综上所述,Microsoft SQL Server 2000 Driver for JDBC是Java开发者与SQL Server 2000进行数据交互的重要工具,通过理解和熟练使用JDBC API,可以高效地开发跨平台的数据库应用。配合提供的帮助文档,开发者可以更...

    JDBC+For+SQL2000.rar

    JDBC提供了一种统一的方式来处理SQL Server 2000中的数据,无论是简单的CRUD操作还是复杂的事务处理、存储过程调用。在SQL Server 2000中,可以通过JDBC执行批处理,优化性能,或者利用连接池管理数据库连接,提升...

    一个SQL Server数据库JDBC商业驱动

    使用这个商业JDBC驱动,开发者可以在Java应用中执行SQL查询,管理数据库事务,处理结果集,以及进行更复杂的操作,如存储过程调用。为了使用该驱动,开发者需要在Java代码中加载驱动,创建数据库连接,然后使用...

    java链接数据库Ms Sql Server2000所需的jar包

    此外,这个JAR文件还可能包含用于身份验证、事务管理、存储过程调用以及SQL Server特定数据类型的实现。 最后,`msutil.jar` 提供了一些实用工具类,这些类通常用于辅助数据库操作,比如数据转换、日期时间处理、...

    JSP连接MS_SQL_server2008

    在JSP页面中加载JDBC驱动是非常重要的一步,这可以通过调用`Class.forName()`方法来完成。 ```java Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); ``` ##### 2. 建立连接 通过`DriverManager....

    JDBC基础.ppt

    JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一种标准接口。它由Sun Microsystems(现为Oracle公司的一部分)开发,自1996年以来不断成熟,为开发者提供了丰富的类和接口,使得在...

    全套数据库驱动JDBC_driver

    总的来说,“全套数据库驱动JDBC_driver”这个资源提供了Java开发者连接到三种主流数据库系统——MS SQL Server、MySQL和Oracle的必要工具,使开发人员能够在跨平台的环境中高效、安全地操作数据。了解和掌握这些...

    sql Driver

    在IT行业中,数据库是存储和管理数据的核心工具,而SQL(Structured Query Language)是用于与关系型数据库交互的标准语言。当使用Java进行Web开发时,例如通过JSP(JavaServer Pages)来创建动态网页,我们需要一种...

    JDBC 驱动 for access

    了解这些基本概念后,开发者就能利用JDBC驱动 for Access2000来创建Java应用程序,执行数据库查询,更新数据,甚至进行事务处理和存储过程调用。同时,确保正确配置ODBC数据源,以实现稳定可靠的数据库连接。

    数据库MS_SOL_SERVER_JDBC的下载与使用

    在IT行业中,数据库是信息系统的核心组成部分,而Microsoft SQL Server作为一款广泛使用的数据库管理系统,其与Java应用程序的连接方式之一就是通过MS_SOL_SERVER_JDBC驱动实现。本文将深入探讨MS_SOL_SERVER_JDBC的...

    msserver驱动

    【msserver驱动】指的是微软SQL Server数据库与应用程序之间的接口,它允许应用程序通过ODBC(Open Database Connectivity)或JDBC(Java Database Connectivity)标准来连接和操作SQL Server数据库。在IT行业中,...

    sqlJar包

    - **执行SQL**:创建`java.sql.Statement`或`java.sql.PreparedStatement`实例,然后调用其`executeQuery()`或`executeUpdate()`方法执行SQL查询或修改语句。 - **结果集处理**:从`Statement`或`PreparedStatement`...

Global site tag (gtag.js) - Google Analytics