JAVA使用JDBC技术操作SqlServer数据库执行存储过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA使用JDBC技术操作SqlServer数据库执行存储过程相关的知识,希望对你有一定的参考价值。

Java使用JDBC技术操作SqlServer数据库执行存储过程:

1.新建SQLSERVER数据库:java_conn_test

2.新建表:tb_User

技术分享

3.分别新建三个存储过程:

1>带参数的新增用户存储过程:

CREATE PROCEDURE [dbo].[p_Insert_User]
@name nvarchar(50),
@UserPwd nvarchar(50)
AS
BEGIN
    INSERT INTO tb_User VALUES(NEWID(),@name,@UserPwd)
END

2>不带参数的查询用户信息存储过程:

CREATE PROCEDURE [dbo].[p_Select_User]
AS
BEGIN
    SELECT * FROM tb_User
END

3>带参数有输出参数的存储过程:

CREATE PROCEDURE [dbo].[p_Select_UserCount]
@name nvarchar(50),
@result int output
AS
BEGIN
    SELECT @result= COUNT(0) FROM tb_User WHERE @name=UserName
END

4>做好准备工作之后新建java项目,导入sqljdbc.jar

package com.Project_DataBase01;

import java.sql.Connection;
import java.sql.DriverManager;

public class SelectQuery {
    
    private Connection conn;
    
    /*
     * 创建一个返回Connection的方法
     */
    public Connection getConnection(){
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            System.out.println("数据库驱动加载成功");
            conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=java_conn_test","sa","123456");
            if(conn==null){
                System.out.println("数据库连接失败");
                System.out.println("-----------------------");
            }else {
                System.out.println("数据库连接成功");
                System.out.println("-----------------------");
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return conn;
    }

}

5>执行存储过程:

package com.Project_DataBase01;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Types;

public class StartMain {
    
    private static Connection conn;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        conn=new SelectQuery().getConnection();
        
        GetProduseInsert();
        
        GetProduseSelect02();
        
        GetProduseSelect();
        
    }

    /*
     * 执行SELECT无参数存储过程,查询数据
     */
    
    public static void GetProduseSelect(){
        if(conn==null){
            System.out.println("链接数据库失败");
        }else {
            try {
                CallableStatement cs=conn.prepareCall("{call p_Select_User()}");
                ResultSet rs=cs.executeQuery();
                while (rs.next()) {
                    String name=rs.getString("UserName");
                    String pwd=rs.getString("UserPwd");
                    String UserId=rs.getString("UserId");
                    System.out.println(name+"\\t"+pwd+"\\t"+UserId);
                }
                System.out.println("查询成功");
                System.out.println("-----------------------");
            } catch (Exception e) {
                // TODO: handle exception
                System.out.println("查询失败");
                System.out.println("-----------------------");
            }
        }
    }
    
    /*
     *执行INSERT有参数存储过程,查询数据 
     */
    public static void GetProduseInsert(){
        if(conn==null){
            System.out.println("数据库连接失败");
        }else {
            try {
                CallableStatement ic=conn.prepareCall("{call p_Insert_User(?,?)}");
                ic.setString(1, "heyangyi");
                ic.setString(2, "123");
                ic.execute();
                System.out.println("添加成功");
             }
             catch (Exception ex) {
                 //TODO: handle exception
                 System.out.println("添加失败");
             }
        }
    }

    /*
     * 执行带输出参数的存储过程
     */
    public static void GetProduseSelect02(){
        if(conn==null){
            System.out.println("数据库链接失败");
        }else {
            try {
                CallableStatement sp=conn.prepareCall("{call p_Select_UserCount(?,?) }");
                sp.setString(1,"heyangyi");
                sp.registerOutParameter(2, Types.INTEGER);
                sp.execute();
                System.out.println("查询成功:"+sp.getInt(2));
            } catch (Exception e) {
                // TODO: handle exception
                System.out.println("查询失败");
            }
        }
    }
}

技术分享

 

以上是关于JAVA使用JDBC技术操作SqlServer数据库执行存储过程的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中如何通过JDBC-ODBC桥来连接SQLServer数据库

用jdbc连接数据库时出现java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDrive

如何用java 连接 sqlserver 数据库

如何将java程序里的一段连接mysql的语句转为连接sqlserver语句。连接的是sqlser

java如何连接SQLserver数据库?

java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost:143