Servlet中操作数据库

以下内容引用自http://wiki.jikexueyuan.com/project/servlet/database-access.html

前提先新建数据库及插入模拟数据:

create table Employees
    (
     id int not null,
     age int not null,
     first varchar (255),
     last varchar (255)
    );
INSERT INTO Employees VALUES (100, 18, ‘Zara‘, ‘Ali‘);
INSERT INTO Employees VALUES (101, 25, ‘Mahnaz‘, ‘Fatma‘);
INSERT INTO Employees VALUES (102, 30, ‘Zaid‘, ‘Khan‘);
INSERT INTO Employees VALUES (103, 28, ‘Sumit‘, ‘Mittal‘);

实例:

//Loading required libraries
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class DatabaseAccess extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
       // JDBC driver name and database URL
       final String JDBC_DRIVER="com.mysql.jdbc.Driver";
       final String DB_URL="jdbc:mysql://localhost:3306/TEST?serverTimezone=UTC";
       //  Database credentials
       final String USER = "root";
       final String PASS = "root";
       // Set response content type
       response.setContentType("text/html");
       PrintWriter out = response.getWriter();
       String title = "Database Result";
       String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " +
          "transitional//en\">\n";
          out.println(docType +
          "<html>\n" +
          "<head><title>" + title + "</title></head>\n" +
          "<body bgcolor=\"#f0f0f0\">\n" +
          "<h1 align=\"center\">" + title + "</h1>\n");

       Connection conn = null;
       Statement stmt = null;
       try{
          // Register JDBC driver
          Class.forName(JDBC_DRIVER);
          // Open a connection
          conn = DriverManager.getConnection(DB_URL,USER,PASS);
          // Execute SQL query
          stmt = conn.createStatement();
          String sql;
          sql = "SELECT id, first, last, age FROM Employees";
          ResultSet rs = stmt.executeQuery(sql);
          // Extract data from result set
          while(rs.next()){
             //Retrieve by column name
             int id  = rs.getInt("id");
             int age = rs.getInt("age");
             String first = rs.getString("first");
             String last = rs.getString("last");
             //Display values
             out.println("ID: " + id + "<br>");
             out.println(", Age: " + age + "<br>");
             out.println(", First: " + first + "<br>");
             out.println(", Last: " + last + "<br>");
          }
          out.println("</body></html>");
          // Clean-up environment
          rs.close();
          stmt.close();
          conn.close();
       }catch(SQLException se){
          //Handle errors for JDBC
          se.printStackTrace();
       }catch(Exception e){
          //Handle errors for Class.forName
          e.printStackTrace();
       }finally{
          //finally block used to close resources
          try{
             if(stmt!=null)
                stmt.close();
          }catch(SQLException se2){
          }// nothing we can do
          try{
             if(conn!=null)
             conn.close();
          }catch(SQLException se){
             se.printStackTrace();
          }//end finally try
       } //end try
    }
} 

现在来编译Servlet并在web.xml文件中创建以下条目:

 <servlet>
     <servlet-name>DatabaseAccess</servlet-name>
     <servlet-class>DatabaseAccess</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>DatabaseAccess</servlet-name>
     <url-pattern>/DatabaseAccess</url-pattern>
 </servlet-mapping> 

现在使用URL http://localhost:8080/DatabaseAccess调用这个Servlet,将显示如下所示响应:

测试工程:https://github.com/easonjim/5_java_example/tree/master/servletbasics/test10

时间: 2024-10-09 06:32:08

Servlet中操作数据库的相关文章

有关网站中操作数据库的几种方法的使用情况

c# 数据查询输出 1 .使用 ExecuteReader() 操作数据库 2.使用ExecuteNonQuery()操作数据库3.使用ExecuteScalar()操作数据库4.使用DataSet 数据集插入记录.更新数据. 1.使用ExecuteReader()操作数据库,执行查询操作的利器 ExecuteReader相比与DataSet而言,DataReader 具有较快的访问能力,并且能够使用较少的服务器资源.DataReader对象提供了“游标”形式的读取方法,当从结果中读取了一行,则

C#中操作数据库技术之ExecuteNonQuery用法

最近在补基础知识,刚好补到C#中对数据库操作的一些技术,今天学习了ExecuteNonQuery的东西,看自己项目维护项目的代码和网上资料查询,基本上搞懂了ExecuteNonQuery的用法,小小的做个总结,供以后查阅. ExecuteNonQuery方法主要用来更新数据,当然也可以用来执行目标操作(例如查询数据库的结构或者创建诸如表等的数据库对象).通常用它来执行insert.update.delete语句,在不使用Dataset的情况下更改数据库中的数据.select语句不适合Execut

C#在winform中操作数据库,实现数据增删改查

1.前言: 运行环境:VS2013+SQL2008+Windows10 程序界面预览: 使用的主要控件:dataGridview和menuStrip等. 2.功能具体介绍: 1.首先,我们要先实现基本的数据操作,增删改查这几个操作. (1)先定义一个数据库操作的公共类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks

spring4.x中操作数据库阶段出现的一个错误

打印的错误日志:The type org.springframework.dao.DataAccessException cannot be resolved. It is indirectly referenced原因: 是因为jdbcTemplate类需要依赖于其他的jar包,这里需要多导入一个org.springframework.transaction-3.X.X.jar包到spring4.x当中去. 在spring4.x中并没有这个jar包的,这时就需要在网上搜索这个包,然后下载下来放

SqlAlchemy 中操作数据库时session和scoped_session的区别

原生session: from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from sqlalchemy应用.models import Users engine = create_engine( "mysql+pymysql://root:[email protected]:3306/pro6?charset=utf8", max_overflow=0, # 超过连接池大小外最多创建

Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面进行描述.参考前文: Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门 Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交 Java+MyEclipse+Tomcat (三)配置MySQL及查询数据显示在JSP网页中 Java+MyE

在MVC3中使用code first生成数据局库并操作数据库

1.建立Users和UserInfos两个实体类 对应的是数据库中的表 public class User { //类名+Id(User+Id)组成的字符串在数据库表中会设置该字段是主键且是按1的增量增长 public int UserId { get; set; } public string UserName { get; set; } } UserInfos表 public class UserInfo { public int UserInfoId { get; set; } publi

编写hibernate 操作数据库的dao层简单代码

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久

【Cocos2d-x Lua】操作数据库封装类

Lua中操作数据库封装类 使用示例 lua代码: require("DB") -- 保存一个字符串(数据库中存储的数据都是以字符串的形式保存的) DB:getInstance():setString("level",level) -- 根据key(isOpenMusic)返回一个数字,第二个参数为默认返回值 local result = DB:getInstance():getNumber("isOpenMusic",1) -- 根据key(is