「javasql储存」java数据库存储
本篇文章给大家谈谈javasql储存,以及java数据库存储对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java调用SQL存储过程、事务
- 2、java 将数据保存到数据库的问题 SQL语句
- 3、在java中使用sql存储过程归类
- 4、java中怎么将sql中的数据存储到数组中
- 5、该怎么在java中使用sql存储过程归类
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数据库存储的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。