package minusyhd;
import java.io.UnsupportedEncodingException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
public class CopyOfMinusYHD {
private static String driverName= "com.sybase.jdbc4.jdbc.SybDataSource";
//192.168.40.159,4018
private static String url = "jdbc:sybase:Tds:127.0.0.1:7001/card?charset=cp850";
private static String username = "sa";
private static String password = "";
static
{
try{
Class.forName(driverName);
}catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}
public Connection getConnection()
{
Connection myConnection = null;
try {
myConnection = DriverManager.getConnection(url, username, password);
}catch (Exception ex) {
ex.printStackTrace();
}
return myConnection;
}
/**
* 释放数据库连接
*/
public static void release(Connection conn, Statement cs, ResultSet rs){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(cs != null){
try {
cs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* @param args
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws UnsupportedEncodingException {
getDataFromMasterMultiResultSet();
}
/**
IF OBJECT_ID ('dbo.Pro_getSudent') IS NOT NULL
DROP PROCEDURE dbo.Pro_getSudent
GO
create procedure Pro_getSudent
(
@startIndex INT,
@endIndex INT ,
@errorCode INT output,
@errorMsg VARCHAR(255) output
)
as
begin
PRINT 'create temp table'
create table #pageTemp
(
ID numeric(15,0) IDENTITY,
nid int
)
set rowcount @endIndex
insert into #pageTemp(nid) select ID from T_STUDENT ORDER BY ID
select @errorCode=1,@errorMsg='用于测试的error message 信息'
select O.ID,O.name from T_STUDENT O,#pageTemp t where O.ID=t.nid
and t.ID>=@startIndex
end
GO
*/
public static void getDataFromMasterInBetweenOutAndSelect() throws UnsupportedEncodingException
{
CopyOfMinusYHD mySybaseTest = new CopyOfMinusYHD();
Connection conn = null;
CallableStatement cs = null;
ResultSet rs = null;
try
{
conn = mySybaseTest.getConnection();
cs = conn.prepareCall("{call Pro_getSudent(?,?,?,?)}");
cs.setInt(1, 1);
cs.setInt(2, 5);
cs.registerOutParameter(3, Types.INTEGER);
cs.registerOutParameter(4, Types.VARCHAR);
cs.execute();
System.out.println("3:"+cs.getInt(3));
System.out.println("4:"+new String(cs.getString(4).getBytes("ISO-8859-1")));
rs = cs.executeQuery();
while(rs.next())
{
System.out.println(new String(rs.getString(2).getBytes("ISO-8859-1")));
}
}
catch (SQLException ex)
{
ex.printStackTrace();
}
finally
{
release(conn,cs,rs);
}
}
/**
IF OBJECT_ID ('dbo.Pro_getSudent2') IS NOT NULL
DROP PROCEDURE dbo.Pro_getSudent2
GO
create procedure Pro_getSudent2
(
@startIndex INT,
@endIndex INT ,
@errorCode INT output,
@errorMsg VARCHAR(255) output
)
as
DECLARE
@aaa VARCHAR(1)
begin
PRINT 'create temp table'
create table #pageTemp
(
ID numeric(15,0) IDENTITY,
nid int
)
--SELECT @aaa = @startIndex
set rowcount @endIndex
insert into #pageTemp(nid) select ID from T_STUDENT ORDER BY ID
select @errorCode=1,@errorMsg='用于测试的error message 信息'
select O.ID,O.name from T_STUDENT O,#pageTemp t where O.ID=t.nid
and t.ID>=@startIndex
select O.ID,O.name from T_STUDENT O,#pageTemp t where O.ID=t.nid
and t.ID>=@startIndex ORDER BY O.name DESC
end
GO
*/
public static void getDataFromMasterMultiResultSet() throws UnsupportedEncodingException
{
CopyOfMinusYHD mySybaseTest = new CopyOfMinusYHD();
Connection conn = null;
CallableStatement cs = null;
ResultSet rs = null;
try
{
conn = mySybaseTest.getConnection();
cs = conn.prepareCall("{call Pro_getSudent2(?,?,?,?)}");
cs.setInt(1, 1);
cs.setInt(2, 5);
cs.registerOutParameter(3, Types.INTEGER);
cs.registerOutParameter(4, Types.VARCHAR);
// cs.execute();
cs.executeQuery();//或者cs.execute();
System.out.println("ee:"+cs.getInt(3));
System.out.println("ff:"+cs.getString(4));
rs = cs.executeQuery();
while(rs.next())
{
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
}
System.out.println("=================");
if(cs.getMoreResults())
{
System.out.println("ddd");
rs = cs.getResultSet();
while(rs.next())
{
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
}
}
}
catch (SQLException ex)
{
ex.printStackTrace();
}
finally
{
release(conn,cs,rs);
}
}
public static void getStudent()
{
CopyOfMinusYHD mySybaseTest = new CopyOfMinusYHD();
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try
{
conn = mySybaseTest.getConnection();
st = conn.createStatement();
rs = st.executeQuery("SELECT * FROM T_STUDENT");
while(rs.next())
{
System.out.println(rs.getInt(1));
if(null==rs.getString(2))
{
System.out.println("dddddddddddd");
}
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}
}
catch(Exception e)
{
System.out.println("搬数据异常");
e.printStackTrace();
}
finally
{
release(conn,st,rs);
}
}
}
http://blog.csdn.net/rubyzhudragon/article/details/5049571
分享到:
相关推荐
总之,Sybase数据库支持通过存储过程调用外部Java程序,提供了一种灵活的方式来实现数据库中的复杂计算和任务调度。正确配置数据库环境,导入Java类,创建适当的SQL包装器,是实现这一功能的关键步骤。理解JNI调用...
Sybase的存储过程是集中存储在SQL Server中的预先定义且已经编译好的事务。存储过程由 SQL语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;...
### Sybase 中实现分页技术的存储过程 #### 背景介绍 Sybase 是一款高性能的关系型数据库管理系统,广泛应用于金融、电信等对数据处理性能有极高要求的领域。在实际的应用场景中,常常需要从数据库中获取大量的数据...
### Sybase存储过程的建立和使用 #### 一、存储过程概述 Sybase的存储过程是一种预先定义并编译好的SQL脚本,集中存储在SQL Server数据库中。它结合了SQL语句和流程控制语句,能够实现复杂的业务逻辑处理。存储...
存储过程是由一个或多个SQL语句组成的程序,它们在Sybase数据库中存储并由用户通过SQL命令调用执行。与单独的SQL语句相比,存储过程具有可重用性,可以减少网络流量,提高系统性能,并且能够更好地封装数据库操作,...
这种方式扩展了SQL语言的功能范围,使开发者能够在存储过程中实现更复杂的逻辑。例如: - **文件操作**:读写文件或目录的操作。 - **网络通信**:发送电子邮件、连接到其他数据库系统等。 - **数据处理**:执行...
本话题将详细讲解如何使用Java调用带有参数的Oracle存储过程,并获取存储过程返回的集合。 首先,Oracle存储过程是一种预编译的SQL语句集合,它可以在数据库服务器端执行,提高性能,减少网络传输。`PROCEDURE.sql`...
存储过程是在数据库中预编译的一系列SQL指令,能够通过单一的调用来执行复杂的操作,提高了性能并简化了应用程序的设计。 ##### 创建存储过程 创建存储过程使用`CREATE PROCEDURE`语句: ```sql CREATE PROCEDURE ...
本文旨在整理和分享关于SYBASE IQ存储过程的学习心得。存储过程允许我们将过程化的SQL语句存储于数据库内部,以便各类程序能够调用。这些存储过程不仅能够执行SQL操作,还能嵌入控制流语句,例如循环(LOOP)、条件...
在Sybase中,创建存储过程使用`CREATE PROCEDURE`语句,调用时只需给出其名称和参数。存储过程提高了代码的复用性和安全性,降低了网络通信成本。 4. **错误处理**: 在使用Sybase时,可能会遇到各种错误。Sybase...
【Sybase IQ 存储过程详解】 Sybase IQ 是一种高效的数据仓库系统,它支持存储过程,这是一种在数据库中预编译的SQL语句集合,能够提升应用性能并简化复杂操作。存储过程允许用户将一系列操作封装起来,方便重复...
Sybase 存储过程是 Sybase 数据库管理系统中的一个重要特性,它允许开发人员将一系列 SQL 语句、控制流程语句和其他数据库操作封装到一个可重用的单元中。存储过程可以提高应用程序的性能,增强安全性,并简化复杂的...
- 有三种方式传递存储过程的返回值:通过OUT或INOUT参数,返回结果集,或者使用RETURN语句。例如,创建一个计算平均薪资的存储过程: ```sql CREATE PROCEDURE AverageSalary(OUT avgsal NUMERIC (20,3)) BEGIN ...
**Sybase ASE ODBC ...总的来说,Sybase ASE ODBC驱动是连接到Sybase数据库的重要工具,它为开发者提供了方便、灵活和高效的数据访问方式。正确配置和使用ODBC驱动,可以确保应用程序与Sybase ASE数据库的无缝集成。
### PowerBuilder中的存储过程调用 在PowerBuilder程序设计中,存储过程是预编译的SQL代码块,存储在数据库服务器上,可以被多次执行而无需重新编译。这不仅提高了执行效率,还简化了数据库操作的复杂性。PB提供了...
Sybase数据库作为一款历史...综上所述,Sybase内部培训教材通过深入浅出的方式,不仅提供了Sybase数据库的基础理论知识,还覆盖了实际操作中的各种细节和技巧,是IT从业者学习和掌握Sybase数据库不可或缺的宝贵资源。
在解压后,开发者需要将对应的32位或64位DLL添加到他们的.NET项目引用中,以便于编译和运行时能正确调用Sybase的数据库功能。 使用这些DLL时,开发者需要注意以下几点: 1. 选择正确的版本:根据应用程序的平台(32...
8. **性能优化**:为了提高效率,客户端可能包含批量操作的支持,例如批量INSERT或批处理存储过程调用,以减少网络往返次数。 9. **安全性**:在实际应用中,客户端需要考虑数据安全,如使用预编译的SQL语句防止SQL...