上星期老师布置实验,题目中有一个要求用Java来调用存储过程。为了完成作业,在网上差了好些资料还看过视频,现在终于有点眉目了。以为自己找的有点辛苦,想必其他人也会如此,因此想把自己编程的经验和大家一块分享。我也是初次使用java调用存储过程,有什么不对的地方还请大家指教,我在此谢过了。
java 编程工具使用myeclipse
数据库使用sql server 2005
存储过程
create proc denglu
@name char(20),
@pwd char(20),
@msg char(30) output
as
if exists(select * from user_table where Login_name = @name)
begin
if exists(select * from user_table where Login_name = @name and password = @pwd)
set @msg = '用户名与密码都正确,登陆成功'
else
set @msg ='密码错误,请重新输入'
end
else
set @msg = '用户名不正确,请重新输入'
java 代码
package world;
import java.sql.*;
public class Sql {
public static void main(String[] args) {
// TODO 自动生成方法存根
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;databaseName=hystu";
Connection conn = null;
//Statement stmt = null;
try{
Class.forName(driver);
conn = DriverManager.getConnection(url, user_name,password)
if(conn != null ){
System.out.println("成功连接JDBC数据库");
}
}catch(Exception ex){
ex.printStackTrace();
}
// 3、操作数据库
// 通过Connection对象实例化Statement对象
String name = "stu1";//输入的参数 1
String pwd = "111";//输入的参数 2
CallableStatement call = null;
String sql = "{ call denglu(?,?,?)}" ;
try
{
//Statement stmt = conn.createStatement() ;
// 为sql变量赋值
// 插入语句
call = conn.prepareCall(sql);
call.registerOutParameter(3, java.sql.Types.VARCHAR);//要向外输出的参数,types.varchar表示输出的参数是字符串类型或是字符型
call.setString(1, name);//输入第一个参数
call.setString(2, pwd);//输入第二个参数
call.execute();//执行
System.out.println(call.getString(3));//输出要输出的参数
call.close();
}
catch(Exception e)
{
System.out.println("操作数据库失败!!!") ;
}
try{
conn.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}