Sql 语句
有一个test_table1表 他有两个字段 ID 和name
proc是procedure的缩写 也就是存储过程,StuProc2为创建的存储过程名称
执行以下创建存储后会在Sql 数据库生成存储过程
create proc StuProc2
as
begin
select * from test_table1;
end
go
调用存储过程(这是无参的):exec StuProc2
创建一个带参的存储过程 @跟上参数名 和类型 返回参数多一个 output
create proc StuProc1
@sname varchar(100),@count int output
as
begin
select @count=count(ID) from test_table1 where name=@sname ;
end
go
调用有参存储过程:exec StuProc1 '字符串参数' (字符串需要有引号)
java 调用,需要用到JDBC连接数据库并创建Connection
packagecom.bowei.utl;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Properties;public classJdbcUtl {//数据库驱动
private static String Driver = "";//数据库地址
private static String url = "";//数据库用户名
private static String userName = "";//数据库密码
private static String password = "";static{
Properties p= newProperties();try{//通过相对路径加载文件
p.load(new FileInputStream(new File("sof/jdbc.properties")));//用getProperty方法通过关键字获取信息
Driver = p.getProperty("Driver");
url= p.getProperty("url");
userName= p.getProperty("userName");
password= p.getProperty("password");
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}public staticString getDriver() {returnDriver;
}public static voidsetDriver(String driver) {
Driver=driver;
}public staticString getUrl() {returnurl;
}public static voidsetUrl(String url) {
JdbcUtl.url=url;
}public staticString getUserName() {returnuserName;
}public static voidsetUserName(String userName) {
JdbcUtl.userName=userName;
}public staticString getPassword() {returnpassword;
}public static voidsetPassword(String password) {
JdbcUtl.password=password;
}//获取数据库连接
public staticConnection getConn() {
Connection conn= null;try{//加载驱动
Class.forName(Driver);//获取数据库连接
conn =DriverManager.getConnection(url, userName, password);
}catch(SQLException e) {
e.printStackTrace();
}catch(ClassNotFoundException e) {
e.printStackTrace();
}returnconn;
}//关闭数据库资源
public static voidcloseAll(ResultSet rs, Statement stat, Connection conn) {/*分别按顺序关闭数据库的结果集资源,Statement 对象资源以及Connection 连接数据库对象*/
if (rs != null) {try{
rs.close();
}catch(SQLException e) {
e.printStackTrace();
}
}if (stat != null) {try{
stat.close();
}catch(SQLException e) {
e.printStackTrace();
}
}if (conn != null) {try{
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
JDBC内容:
Driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://192.168.33.170;DatabaseName=test
userName=xxzx
password=xxzx
packagecunChuGuoCheng;importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importcom.bowei.utl.JdbcUtl;public classcunChu {/*** 带参的存储过程 返回一个int类型的值
**/
public voiddaican(){try{
Connection conn=JdbcUtl.getConn();
CallableStatement c=conn.prepareCall("{call StuProc1(?,?)}");//调用带参的存储过程//给存储过程的参数设置值
c.setString(1,"测试"); //将第一个参数的值设置成测试
c.registerOutParameter(2,java.sql.Types.INTEGER);//第二个是返回参数 返回未Integer类型//执行存储过程
c.execute();
System.out.println (c.getInt(2));//打印返回参数
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}/*** 这个是直接返回查询所有的结果
**/
public voidquery(){try{
Connection conn=JdbcUtl.getConn();
CallableStatement c=conn.prepareCall("{call StuProc2}");//这儿调用了查询所有的存储过程
ResultSet rs=c.executeQuery();
System.out.println ("学号:"+" "+"姓名:");while(rs.next())
{int Stu=rs.getInt("ID");
String name=rs.getString("name");
System.out.println (Stu+" "+name+" ");
}
c.close();
}catch(Exception e){
e.printStackTrace();
}
}public static void main(String[] args) throwsSQLException {
cunChu cun=newcunChu();//cun.daican();//带参的存储过程
cun.query();//返回查询所有的存储过程
}
}