zoukankan      html  css  js  c++  java
  • Jdbc初体验

    Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文介绍的是连接SQLServer数据库:

    1.打开SQLServer的配置管理器:

    2.打开TCP/IP的属性,IPALL的端口改为1433

    3.打开服务,重新启动SQL Server(SQLEXPRESS)

    4.下面开始写简易的JDBC:

    String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=bookDB";
    String USERNAME = "sa";
    String PASSWORD = "1234";
     1 package com.ccec.jdbc;
     2 
     3 import java.beans.Statement;
     4 import java.sql.Connection;
     5 import java.sql.DriverManager;
     6 import java.sql.PreparedStatement;
     7 import java.sql.ResultSet;
     8 import java.sql.SQLException;
     9 
    10 public class jdbc {
    11     private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    12     private static final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=bookDB";
    13     private static final String USERNAME = "sa";
    14     private static final String PASSWORD = "1234";
    15 
    16     public boolean login(String username, String password) {
    17         Connection con = null;
    18         PreparedStatement st = null;
    19         ResultSet rs = null;
    20 
    21         try {
    22             Class.forName(DRIVER);
    23             con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
    24             String sql = "select userName,pwd from userInfo where userName=? and pwd=?";
    25             st = con.prepareStatement(sql);
    26             st.setString(1, username);
    27             st.setString(2, password);
    28             rs = st.executeQuery();
    29 
    30             if (rs.next()) {
    31                 System.out.println(username);
    32                 return true;
    33             }
    34         } catch (ClassNotFoundException e) {
    35             // TODO Auto-generated catch block
    36             e.printStackTrace();
    37         } catch (SQLException e) {
    38             // TODO Auto-generated catch block
    39             e.printStackTrace();
    40         } finally {
    41             try {
    42                 if (rs != null) {
    43                     rs.close();
    44                 }
    45                 if (st != null) {
    46                     st.close();
    47                 }
    48                 if (con != null) {
    49                     con.close();
    50                 }
    51             } catch (SQLException e) {
    52                 // TODO Auto-generated catch block
    53                 e.printStackTrace();
    54             }
    55         }
    56         return false;
    57     }
    58 }

     5.封装后的JDBC

      1 package com.ccec.jdbc;
      2 
      3 /**
      4  * @author StayReal
      5  */
      6 import java.sql.Connection;
      7 import java.sql.DriverManager;
      8 import java.sql.PreparedStatement;
      9 import java.sql.ResultSet;
     10 import java.sql.SQLException;
     11 
     12 public class jdbc {
     13     // SQLServer驱动类的全名(包名.;类名)
     14     private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
     15     // 连接的URL
     16     private static final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=bookDB";
     17     // 登陆SQLServer的用户名
     18     private static final String USERNAME = "sa";
     19     // 登陆SQLServer的密码
     20     private static final String PASSWORD = "1234";
     21     // 数据库的对象声明
     22     private Connection con = null;
     23     private PreparedStatement pst = null;
     24     private ResultSet rs = null;
     25 
     26     /**
     27      * 加载驱动,建立连接
     28      * 
     29      * @throws ClassNotFoundException
     30      * @throws SQLException
     31      */
     32     private void getConnection() throws ClassNotFoundException, SQLException {
     33         Class.forName(DRIVER);
     34         con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
     35     }
     36 
     37     /**
     38      * 执行查询
     39      * 
     40      * @param sql
     41      *            执行的SQL语句
     42      * @param params
     43      *            Object数组 封装所有的SQL语句参数 顺序与SQL语句是参数顺序一致
     44      * @return ResultSet 返回执行的结果
     45      */
     46     public ResultSet execQuery(String sql, Object[] params) {
     47         try {
     48             getConnection();
     49             pst = con.prepareStatement(sql);
     50             setPrepareStatementParams(params);
     51             rs = pst.executeQuery();
     52         } catch (SQLException e) {
     53             e.printStackTrace();
     54         } catch (ClassNotFoundException e) {
     55             e.printStackTrace();
     56         }
     57         return rs;
     58     }
     59 
     60     /**
     61      * 执行增加、删除、修改SQL操作的方法
     62      * 
     63      * @param sql
     64      *            执行的参数化SQL语句
     65      * @param params
     66      *            Object数组 封装所有的SQL语句参数 顺序与SQL语句是参数顺序一致
     67      * @return int型 受影响的行数 -1表示出现异常
     68      */
     69     public int execUpadte(String sql, Object[] params) {
     70         try {
     71             getConnection();
     72             pst = con.prepareStatement(sql);
     73             setPrepareStatementParams(params);
     74             int affectedRows = pst.executeUpdate();
     75             return affectedRows;
     76         } catch (ClassNotFoundException e) {
     77             e.printStackTrace();
     78         } catch (SQLException e) {
     79             e.printStackTrace();
     80         } finally {
     81             closeAll();
     82         }
     83         return -1;
     84     }
     85 
     86     /**
     87      * 为PrepareStatement设置参数
     88      * 
     89      * @param params
     90      *            参数数组
     91      * @throws SQLException
     92      */
     93     private void setPrepareStatementParams(Object[] params) throws SQLException {
     94         if (params != null) {
     95             // 传一个数组的参数
     96             for (int i = 0; i < params.length; i++) {
     97                 pst.setObject(i + 1, params[i]);
     98             }
     99         }
    100     }
    101 
    102     /**
    103      * 关闭Connection ,PrepareStatement,ResultSet
    104      */
    105     private void closeAll() {
    106         try {
    107             if (rs != null) {
    108                 rs.close();
    109             }
    110             if (pst != null) {
    111                 pst.close();
    112             }
    113             if (con != null) {
    114                 con.close();
    115             }
    116         } catch (SQLException e) {
    117             e.printStackTrace();
    118         }
    119     }
    120 }
  • 相关阅读:
    Ajax XMLHttpRequest对象的三个属性以及open和send方法
    去空格
    绑定事件中 如可控制函数的执行次数
    我之理解---计时器setTimeout 和clearTimeout
    关于border边框重叠颜色设置问题
    YbtOj练习:二分5 飞离地球
    YbtOj练习:二分4 分割矩阵
    YbtOj练习:二分3 攻击法坛
    YbtOj练习:贪心3 最优密码
    YbtOj练习:二分2 最小时间
  • 原文地址:https://www.cnblogs.com/stayreal/p/3909391.html
Copyright © 2011-2022 走看看