「javasql储存」java数据库存储

博主:adminadmin 2023-01-22 06:06:08 282

本篇文章给大家谈谈javasql储存,以及java数据库存储对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java调用SQL存储过程、事务

例示一个不带参数的简单存储过程。多数存储过程的功能比本例复杂多了,但这里主要说明存储过程的一些基本要点。如前面所述,不同DBMS定义存储过程的语法是不同的。例如,有些DBMS使用begin

.

.

.

end或其他关键字指明存储过程定义的开始和结束。在有些DBMS中,下面的SQL语句可创建一个存储过程:

create

procedure

SHOW_SUPPLIERS

as

select

SUPPLIERS.SUP_NAME,

COFFEES.COF_NAME

from

SUPPLIERS,

COFFEES

where

SUPPLIERS.SUP_ID

=

COFFEES.SUP_ID

order

by

SUP_NAME

下面的代码将SQL语句放到一个字符串中,然后赋给变量createProcedure以备后用:

String

createProcedure

=

"create

procedure

SHOW_SUPPLIERS

"

+

"as

"

+

"select

SUPPLIERS.SUP_NAME,

COFFEES.COF_NAME

"

+

"from

SUPPLIERS,

COFFEES

"

+

"where

SUPPLIERS.SUP_ID

=

COFFEES.SUP_ID

"

+

"order

by

SUP_NAME";

下面的代码段使用Connection对象con来创建Statement对象,用于把创建存储过程的SQL语句发送给数据库:

Statement

stmt

=

con.createStatement();

stmt.executeUpdate(createProcedure);

存储过程SHOW_SUPPLIERS将作为一个可调用的数据库对象在数据库中编译并存储,调用时就像调用其他方法一样。

java 将数据保存到数据库的问题 SQL语句

使用jdbc操作数据库的话,具体就是要看你要操作的那一种数据库了,然后sql语句跟java没关系,还是使用原来的,除非你用的hibernate。

查询肯定能查询单个的,比如说

select

*

from

table1

where

id

=

1就是查询id为1的那个结果

java只是把他当字符串传过去,有多种传值方法,比如方法

query(string

id),可以这样

string

sql

=

“select

*

from

table1

where

id='”+id+“‘”;

或者

string

sql

=

“select

*

from

table1

where

id=?”;

然后在后面的resultset

rs中这样

rs.setstring(id);

关于建立连接、操作、释放连接等过程这里就不给出咯

在java中使用sql存储过程归类

1 使用不带参数的存储过程

public static void executeStoredProcedure(Connection con) {

try {

CallableStatement cstmt = con.prepareCall("{call dbo.GetContactFormalNames}");

ResultSet rs = cstmt.executeQuery();

while (rs.next()) {

System.out.println(rs.getString("FormalName"));

}

}

rs.close();

cstmt.close();

catch (Exception e) {

e.printStackTrace();

}

}

2 使用带有输入参数的存储过程

public static void executeStoredProcedure(Connection con) {

try {

CallableStatement cstmt = con.prepareCall("{call dbo.uspGetEmployeeManagers(?)}");

cstmt.setInt(1, 50);

ResultSet rs = cstmt.executeQuery();

while (rs.next()) {

System.out.println("EMPLOYEE:");

System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));

System.out.println("MANAGER:");

System.out.println(rs.getString("ManagerLastName") + ", " + rs.getString("ManagerFirstName"));

System.out.println();

}

}

rs.close();

cstmt.close();

catch (Exception e) {

e.printStackTrace();

}

}

3 使用带有输出参数的存储过程

public static void executeStoredProcedure(Connection con) {

try {

CallableStatement cstmt = con.prepareCall("{call dbo.GetImmediateManager(?, ?)}");

cstmt.setInt(1, 5);

cstmt.registerOutParameter(2, java.sql.Types.INTEGER);

cstmt.execute();

System.out.println("MANAGER ID: " + cstmt.getInt(2));

}

catch (Exception e) {

e.printStackTrace();

}

}

4 使用带有返回状态的存储过程

作为示例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程:

CREATE PROCEDURE CheckContactCity @cityName CHAR(50)ASBEGIN IF ((SELECT COUNT(*) FROM Person.Address WHERE City = @cityName) 1) RETURN 1ELSE RETURN 0END

public static void executeStoredProcedure(Connection con) {

try {

CallableStatement cstmt = con.prepareCall("{? = call dbo.CheckContactCity(?)}");

cstmt.registerOutParameter(1, java.sql.Types.INTEGER);

cstmt.setString(2, "Atlanta");

cstmt.execute();

System.out.println("RETURN STATUS: " + cstmt.getInt(1));

}

cstmt.close();

catch (Exception e) {

e.printStackTrace();

}

}

注:在sql中执行该存储过程的方法:

declare @c int

exec @c=CheckContactCity 'Atlanta'

print @c

5 使用带有更新记数的存储过程

作为示例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下表和存储过程:

CREATE TABLE TestTable

(Col1 int IDENTITY,

Col2 varchar(50),

Col3 int);

CREATE PROCEDURE UpdateTestTable

@Col2 varchar(50),

@Col3 int

AS

BEGIN

UPDATE TestTable

SET Col2 = @Col2, Col3 = @Col3

END;

public static void executeUpdateStoredProcedure(Connection con) {

try {

CallableStatement cstmt = con.prepareCall("{call dbo.UpdateTestTable(?, ?)}");

cstmt.setString(1, "A");

cstmt.setInt(2, 100);

cstmt.execute();

int count = cstmt.getUpdateCount();

cstmt.close();

System.out.println("ROWS AFFECTED: " + count);

}

catch (Exception e) {

e.printStackTrace();

}

}

java中怎么将sql中的数据存储到数组中

假设表中的字段有3个

Object[]

a=new

Object[3];

取到的数据为list或者vector

for(int

i=0;ilist.size();i++){

a[i]=list[i]

}

这样就行了,放到object数组中

该怎么在java中使用sql存储过程归类

JDBC调用存储过程: CallableStatement

在Java里面调用存储过程,写法那是相当的固定:

Class.forName(....

Connection conn = DriverManager.getConnection(....

/**

*p是要调用的存储过程的名字,存储过程的4个参数,用4个?号占位符代替

*其余地方写法固定

*/

CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}");

/**

*告诉JDBC,这些个参数,哪些是输出参数,输出参数的类型用java.sql.Types来指定

*下面的意思是,第3个?和第4个?是输出参数,类型是INTEGER的

*Types后面具体写什么类型,得看你的存储过程参数怎么定义的

*/

cstmt.registerOutParameter(3, Types.INTEGER);

cstmt.registerOutParameter(4, Types.INTEGER);

/**

*在我这里第1个?和第2个?是输入参数,第3个是输出参数,第4个既输入又输出

*下面是设置他们的值,第一个设为3,第二个设为4,第4个设置为5

*没设第3个,因为它是输出参数

*/

cstmt.setInt(1, 3);

cstmt.setInt(2, 4);

cstmt.setInt(4, 5);

//执行

cstmt.execute();

//把第3个参数的值当成int类型拿出来

int three = cstmt.getInt(3);

System.out.println(three);

//把第4个参数的值当成int类型拿出来

int four = cstmt.getInt(4);

System.out.println(four);

//用完别忘给人家关了,后开的先关

cstmt.close();

conn.close();

JDBC调用存储过程,掌握这一个程序足够了.

以下是上面程序使用的存储过程的代码,我用的是Oracle数据库,不过不论是什么数据库,对于你

的程序,JDBC这一端写法都是一样的.

create or replace procedure p

(v_a in number,v_b number,v_ret out number,v_temp in out number)

is

begin

if(v_a v_b) then

v_ret := v_a;

else

v_ret := v_b;

end if;

v_temp := v_temp + 1;

end;

关于javasql储存和java数据库存储的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。