zoukankan      html  css  js  c++  java
  • JavaWeb -JDBC使用(数据库-javaweb连接)

    使用JDBC四个大类

    1. DriverManager:管理jdbc驱动

    2. Connection:连接(通过DriverManager产生)

    3. Statement/PreparedStatement:增删改executeUpdate()查executeQuery() 

     CallableStatement调用数据库中 存储过程/存储函数 (皆通过Connection产生)

        statement()方法:增删改executeUpdate()查executeQuery()

        PreparedStatement(sql语句)方法:同上+setXXX(postion,value)

    4. Resultset:返回到结果集  (通过Statement等产生)

      方法:next():光标下移,判断是否有下一条数据:true/false

         getXXX(字段名/位置):获取具体的字段值  XXX为int/String/...

      Statement与PreparedStatement的区别:(推荐用PreparedStatement

      1. Statement:

        SQL语句

        executeUpdata(SQL)

      2. PreparedStatement

        sql(可能存在占位符‘?’)

        在创建PreparedStatement对象时,将sql预编译PreparedStatement(sql)

        executeUpdata()

        setXXX(postion,value)  将sql中占位符?替换

    JDBC访问数据库具体步骤

    1. 导入驱动,加载具体驱动类

    2. 与数据库建立链接

    3. 发送sql语句,执行

    4. 处理结果集合(查)

     **补充:导入驱动和具体驱动类:

           驱动jar(x为版本号)       具体驱动类                 连接字符串

    Oracle     ojdbc-x.jar            oracle.jdbc.OracleDriver             jdbc:oracle:thin:@localhost:1521:ORCL

    MySQL    mysql-connector-java-x.jar    com.mysql.jdbc.Driver                 jdbc:mysql://localhost:3306/数据库实例名

    SQL server   sqljdbc-x.jar         com.microsoft.sqlserver.jdbc.SQLServerDriver  jdbc:microsoft:sqlserver:localhost:1433;databasename=数据库实例名

    代码示例:

    用java在数据库中增删改数据

    package jdbcproject;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    
    public class add {
        //sql数据库连接字符串
        private static final String URL="jdbc:sqlserver://localhost:1433;databasename=javatest";
        //sql用户名 和密码 用作连接用
        private static final String USERNAME="sa";
        private static final String PWD="cc123nice";
        
        public static void update() throws ClassNotFoundException, SQLException {//增删改
            //导入驱动,加载具体驱动类
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            //与数据库建立链接
            Connection connection = DriverManager.getConnection(URL, USERNAME, PWD);
            //发送sql语句(增删改)
            Statement stmt = connection.createStatement();
            //实现增删改
            String sql="insert into test values('cc',13)"; 
    //        String sql="update into test values('cd',13)";
    //        String sql="delete table test"; 
            
            //返回增删改几条数据
            int num = stmt.executeUpdate(sql);
            if(num>0)
                System.out.println("操作成功");
            stmt.close();
            connection.close();
        }
        public static void main(String[] args) {
            try {
                update();
            } catch (ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            }
        }
    }

    JavaBean

    1. 将jsp中的java代码转移到src的一个类中 称之为javabean

    2. 要求:

        public修饰类 ,public 无参构造

        所有属性(如果有)都是private,且提供get/set方法(如果boolean 则为is方法)

    3. 优点:   减轻复杂度

         提高复用率

         封装业务逻辑 (相当于运用数据库的表)

         封装数据  (对应于数据库的一张表)

    代码示例:

    三板块 Javabean /JSP/lib中包导入

          

    1. first.logindao为JavaBean封装了sql语句(命名规范与数据库连接的类以dao结尾)

    package first;
    
    import java.sql.*;
    
    public class logindao {
        //sql数据库连接字符串
        private static final String URL="jdbc:sqlserver://localhost:1433;databasename=javatest";
        //sql用户名 和密码 用作连接用
        private static final String USERNAME="sa";
        private static final String PWD="cc123nice";
        
        public int login(String name,String pws) {
            Connection connection=null;
            Statement stmt=null;
            ResultSet rs=null;
            
            try {
                //导入驱动,加载具体驱动类
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                //与数据库建立链接
                connection = DriverManager.getConnection(URL, USERNAME, PWD);
                //发送sql语句(增删改)
                stmt = connection.createStatement();
       
                String sql="select count(*) from test where name='"+name+"' and pwd='"+pws+"'";
                rs=stmt.executeQuery(sql);
                int count=-1;
                if(rs.next()) {
                    count = rs.getInt(1);
                }
                return count;                
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                return -1;
            } catch (SQLException e) {
                e.printStackTrace();
                return -1;
            }catch (Exception e) {
                e.printStackTrace();
                return -1;
            }   
        }
    }

    2. JSP中设置用户输入界面与跳转结果界面

    --login.jsp
    <
    %@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <form action="check.jsp" method="post"> 用户名:<input type="text" name="uname"><br/> 密码: <input type="password" name="upwd"/><br/> <input type="submit" value="登陆"><br/> </form> </body> </html>

    --check.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="first.logindao" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <% String name=request.getParameter("uname"); String pwd=request.getParameter("upwd"); logindao dao=new logindao(); int result=dao.login(name,pwd); if(result>0) out.print("登陆成功"); else if(result==0) out.print("用户名/密码有误"); else out.print("代码错误"); %> </body> </html>

    3. 导入包-正常java文件导入包需要将包粘贴于根目录下,右键buildpath-》configure build path(如下图)

    但对于javaweb项目中 若要导入包则只需放入lib文件夹下

  • 相关阅读:
    Ubuntu环境下NFS服务器搭建
    Node.js+koa2
    linux rhel7下安装python
    数据结构之链表
    0416. Partition Equal Subset Sum (M)
    0395. Longest Substring with At Least K Repeating Characters (M)
    1015. Smallest Integer Divisible by K (M)
    0227. Basic Calculator II (M)
    0337. House Robber III (M)
    0804. Unique Morse Code Words (E)
  • 原文地址:https://www.cnblogs.com/cc123nice/p/10707969.html
Copyright © 2011-2022 走看看