zoukankan      html  css  js  c++  java
  • JDBC连接sql server数据库的详细步骤和代码 转

    JDBC连接sql server数据库的步骤如下:

     1、加载JDBC驱动程序(只做一次):   
        在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),   
        这通过java.lang.Class类的静态方法forName(String  className)实现。
       成功加载后,会将Driver类的实例注册到DriverManager类中。   
     2、提供JDBC连接的URL   
       •连接URL定义了连接数据库时的协议、子协议、数据源标识。   
        •书写形式:协议:子协议:数据源标识   
        协议:在JDBC中总是以jdbc开始   
        子协议:是桥连接的驱动程序或是数据库管理系统名称。   
        数据源标识:标记找到数据库来源的地址与连接端口。     
     3、创建数据库的连接(Connection)   
        •要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,   
         该对象就代表一个数据库的连接。   
        •使用DriverManager的getConnectin(String url , String username ,    
        String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和   
         密码来获得。
     4、创建一个Statement   
        •要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3  
         种类型:   
          1、执行静态SQL语句。通常通过Statement实例实现。   
          2、执行动态SQL语句。通常通过PreparedStatement实例实现。   
          3、执行数据库存储过程。通常通过CallableStatement实例实现。   
        具体的实现方式:   
            Statement stmt = con.createStatement() ;   
           PreparedStatement pstmt = con.prepareStatement(sql) ;   
           CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;   
     5、执行SQL语句   
        Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate   
       和execute   
        1、ResultSet executeQuery():执行查询数据库的SQL语句   
            ,返回一个结果集(ResultSet)对象。   
         2、int executeUpdate():用于执行INSERT、UPDATE或   
            DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等   
         3、execute():用于执行返回多个结果集、多个更新计数或二者组合的   
            语句。   
       具体实现的代码:   
              ResultSet rs = pstmt.executeQuery() ;   
              int rows = pstmt.executeUpdate() ;   
              boolean flag = pstmt.execute() ;   
     6、处理结果   
        两种情况:   
         1、执行更新返回的是本次操作影响到的记录数。   
         2、执行查询返回的结果是一个ResultSet对象。   
        • ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些   
          行中数据的访问。   
        • 使用结果集(ResultSet)对象的访问方法获取数据:   
         while(rs.next()){   
             String name = rs.getString("name") ;   
             String pass = rs.getString(1) ;
         }    
     7、关闭JDBC对象    
         操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声   
         明顺序相反:   
         1、关闭记录集   
         2、关闭声明   
         3、关闭连接对象  
    
    注意:一定不能忘记关闭jdbc对象
         数据库连接(Connection)是非常稀有的资源,用完后必须马上释放,
         如果Connection不能及时正确的关闭将导致系统宕机。
       Connection的使用原则是尽量晚创建,尽量早的释放。

     
    JDBC连接sql server数据库代码:

    package com.accp.jdbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.apache.log4j.Logger;
    
    public class BaseDao {
    	// 使用log4j记录日志
    	private static Logger logger = Logger.getLogger(BaseDao.class);
    	// 连接驱动
    	private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    	// 连接路径
    	private static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=MySchool";
    	// 用户名
    	private static final String USERNAME = "sa";
    	// 密码
    	private static final String PASSWORD = "sa";
    	
    	//静态代码块
    	static {
    		try {
    			// 加载驱动
    			Class.forName(DRIVER);
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
    
    	/*
    	 * 获取数据库连接
    	 */
    	public Connection getConnection() {
    		Connection conn = null;
    		logger.debug("开始连接数据库");
    		try{
    			conn=DriverManager.getConnection(URL, USERNAME, PASSWORD);
    		}catch(SQLException e){
    			e.printStackTrace();
    			logger.error("数据库连接失败!");
    		}
    		logger.debug("数据库连接成功");
    		return conn;
    	}
    
    	/*
    	 * 关闭数据库连接,注意关闭的顺序
    	 */
    	public void close(ResultSet rs, PreparedStatement ps, Connection conn) {
    		if(rs!=null){
    			try{
    				rs.close();
    				rs=null;
    			}catch(SQLException e){
    				e.printStackTrace();
    				logger.error("关闭ResultSet失败");
    			}
    		}
    		if(ps!=null){
    			try{
    				ps.close();
    				ps=null;
    			}catch(SQLException e){
    				e.printStackTrace();
    				logger.error("关闭PreparedStatement失败");
    			}
    		}
    		if(conn!=null){
    			try{
    				conn.close();
    				conn=null;
    			}catch(SQLException e){
    				e.printStackTrace();
    				logger.error("关闭Connection失败");
    			}
    		}
    	}
    }
    

         转载地址:http://blog.csdn.net/qy1387/article/details/7944133

        挺喜欢作者第一段的对jdbc连接的详细的讲解,之前会用,但是不太清楚具体的原理,缺少理论的讲解,万分感谢!!

  • 相关阅读:
    Netty快速入门(09)channel组件介绍
    Netty快速入门(08)ByteBuf组件介绍
    Netty快速入门(07)Netty入门例子
    Netty快速入门(06)Netty介绍
    Netty快速入门(05)Java NIO 介绍-Selector
    Netty快速入门(04)Java NIO 介绍-Channel
    Netty快速入门(03)Java NIO 介绍-Buffer
    Netty快速入门(02)Java I/O(BIO)介绍
    Netty快速入门(01)Linux I/O模型介绍
    老虎集团【4面】
  • 原文地址:https://www.cnblogs.com/smilefortoday/p/4037507.html
Copyright © 2011-2022 走看看