声明:学了几天终于将增删改查的操作掌握了,也发现了一些问题,所以总结一下.

重点:操作数据库主要用的是SQL语句跟其他无关.

一:前提知识:PreparedStatement

PreperedStatement是Statement的子类,它的实例对象可以通过调用Connection.preparedStatement()方法获得,相对于Statement对象而言:PreperedStatement可以避免SQL注入的问题。
  Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement可对SQL进行预编译,从而提高数据库的执行效率。并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。

举例:

 PreperedStatement mi = Connection.preparedStatement();
try{
i = mi.executeUpdate();
}catch(Exception e){
if(i != )
{
System.out.println("修改不成功");
}
}

二:实际例子:

1: 编写index.jsp文件通过JSTL中的<c:redirect>标签指向servlet

 package com.ll;

 import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import dao.Studentdao2; /**
* Servlet implementation class GoodsServlet
*/
@WebServlet("/GoodsServlet")
public class GoodsServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public GoodsServlet() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String action = request.getParameter("action");
if(action.equals("zongjin")){ try {
query(request,response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
} public void query(HttpServletRequest request, HttpServletResponse response) throws Exception{
Studentdao2 conn = new Studentdao2();
String sql = "Select *from Student"; /*
//调用函数去向数据库中添加数据
String addsql = "于海-19-软件1501-男";
conn.addsql(addsql);
*/ /*
//删除数据库中的数据
String strdelete = "Delete from Student Where 姓名 = '于海'";
conn.deletesql(strdelete);
*/ /*
//修改数据库中的数据
String update = "Update Student set 姓名='宗进' Where 姓名 = '小明' ";
conn.updateSql(update);
*/ ResultSet rs =conn.executeQuery1(sql);//调用自制函数来接受查询的结果
List list = new ArrayList();
while(rs.next())
{
Student f = new Student();
//equals比较的结果为false是因为从数据库中返回的字符串为"宗进 "
f.setBanji(rs.getString("班级"));
f.setName(rs.getString("姓名"));
f.setSex(rs.getString("性别"));
f.setTime(rs.getString("年龄")); list.add(f); } request.setAttribute("list", list);
request.getRequestDispatcher("sql2.jsp").forward(request, response); }
public String cat(String str){
String[] arr = str.split(" ");
String s = arr[];
return s; } }

3.Servlet的web.xml文件

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>JSTL</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/tld/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/tld/x.tld</taglib-location>
</taglib>
</jsp-config> <servlet>
<servlet-name>GoodsServlet</servlet-name>
<servlet-class>com.ll.GoodsServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>GoodsServlet</servlet-name>
<url-pattern>/com.ll.GoodsServlet</url-pattern>
</servlet-mapping> </web-app>

4.创建一个用于连接数据库并且处理的类

 package dao;

 import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; public class Studentdao2 {
public Connection conn = null;
public String url = null;
public Statement stmt = null;
public ResultSet rs = null;
public static String propFilename = "Studentdao2.properties";
private static Properties prop = new Properties();
private static String dbClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static String dbUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=StudentManagement";
private static String addSql = "insert into Student values(?,?,?,?)";
private static String updateSql = "update Student set 姓名=?,年龄=?,班级=?,性别=?";//用于整体修改数据库中的值
public Studentdao2(){
try{
// InputStream in = getClass().getResourceAsStream(propFilename);
// prop.load(in);
// dbClassName = prop.getProperty("DB_URL",dbUrl);
// dbUrl = prop.getProperty("DB_URL", dbUrl);
Class.forName(dbClassName);
conn = DriverManager.getConnection(dbUrl, "sa", "zongjin123");
if(conn != null)
{
System.out.println("连接成功");
}
else{
System.out.println("连接失败");
}
stmt = conn.createStatement(); }catch(Exception e){
e.printStackTrace();
} }
public ResultSet executeQuery1(String sql) throws Exception {
// TODO Auto-generated method stub
this.rs = this.stmt.executeQuery(sql);
return this.rs;
}
public void addsql(String sql) throws Exception{
PreparedStatement add = conn.prepareStatement(addSql);
String[] shuju = sql.split("-");
System.out.println(shuju[]);
add.setString(, shuju[]);
add.setString(,shuju[]);
add.setString(,shuju[]);
add.setString(, shuju[]);
add.executeUpdate();
add.close();
}
public void deletesql(String sql) throws Exception{
int i = ;
PreparedStatement delete = conn.prepareStatement(sql);
try{
i = delete.executeUpdate();
}catch(Exception e){
if(i != )
{
System.out.println("删除失败");
}
}
delete.close();
}
public void updateSql(String sql)throws Exception
{
PreparedStatement update = conn.prepareStatement(sql);
//用于整体修改数据库中的值,但是一般直接用sq语句来进行操作数据库
//update.setString(2, str);
//String[] shuju = sql.split("-");
//System.out.println(shuju[0]);
//update.setString(1, shuju[0]);
//update.setString(2,shuju[1]);
//update.setString(3,shuju[2]);
//update.setString(4, shuju[3]);
update.executeUpdate();
update.close();
} }

5.编写用于存储数据的student类

 package com.ll;

 public class Student {
private String name;
private String time;
private String banji;
private String sex;
public String getBanji() {
return banji;
}
public void setBanji(String banji) {
this.banji = banji;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
} public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
} }

6运行index.jsp文件来运行

JavaWeb程序利用Servlet的对SQLserver增删改查操作的更多相关文章

  1. 利用Servlet做一套增删改查

    真的,稳住,考上研,利用两年逆袭.一步一步来,实在不行,最后最差也不过就是就回家种地,想想也不错. 前期准备配置 建一个动态web项目 新建Dynamic Web ProjectFile->Ne ...

  2. Servlet练习:实现增删改查的综合练习

    ---恢复内容开始--- 本文为原创,转载请注明出处:https://www.cnblogs.com/Tom-shushu/p/9383066.html 本篇内容主要介绍:通过Servlet,JSP, ...

  3. C#利用WinForm调用WebServices实现增删改查

    实习导师要求做一个项目,用Winform调用WebServices实现增删改查的功能.写下这篇博客,当做是这个项目的总结.如果您有什么建议,可以给我留言.欢迎指正. 1.首先,我接到这个项目的时候,根 ...

  4. JDBC 1 利用Statement对数据库进行增删改查

    准备工作 1新建po类:User private int id; private String name; private String pwd; set,get方法省略 2  新建UserDao类, ...

  5. Android(java)学习笔记193:利用谷歌API对数据库增删改查(推荐使用)

    接下来我们通过项目案例来介绍:这个利用谷歌API对数据库增删改查 1.首先项目图: 2.这里的布局文件activity_main.xml: <LinearLayout xmlns:android ...

  6. PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码

    PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...

  7. vue实战(一):利用vue与ajax实现增删改查

    vue实战(一):利用vue与ajax实现增删改查: <%@ page pageEncoding="UTF-8" language="java" %> ...

  8. Android(java)学习笔记136:利用谷歌API对数据库增删改查(推荐使用)

    接下来我们通过项目案例来介绍:这个利用谷歌API对数据库增删改查 1. 首先项目图: 2. 这里的布局文件activity_main.xml: <LinearLayout xmlns:andro ...

  9. 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧

        通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...

随机推荐

  1. 解决Nuget:https://api.nuget.org/v3/index.json 访问不了的问题

    最近在家中用使用VS编译项目时,Nuget包一直下载不了,直接在浏览器中访问https://api.nuget.org/v3/index.json ,浏览器也打不开网址.把https协议改成http协 ...

  2. 逻辑回归的实现(LogicalRegression)

    1.背景知识       在刚刚结束的天猫大数据s1比赛中,逻辑回归是大家都普遍使用且效果不错的一种算法.   (1)回归           先来说说什么是回归,比如说我们有两类数据,各有50十个点 ...

  3. MySQL表空间集

    --MySQL表空间集 ----------------------2014-09-20 1. 收缩ibdata的方法,目前MySQL依然没有提供收缩ibdata的方法,只能重构,下面是5.7的步骤. ...

  4. iOS组件化方案的几种实现

    最近研究了一下项目的组件化,把casa.bang.limboy的有关组件化的博客看了一遍,学到了不少东西,对目前业界的组件化方案有了一定的了解.这些高质量的博客大致讨论了组件化的三种方案:url-bl ...

  5. Go的变量作用域

    Go 语言变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. Go 语言中变量可以在三个地方声明: 函数内部定义的变量称为局部变量 函数外部定义的变量称为全局变量 ...

  6. css文本样式及控制文本的大小写

    常用文本样式如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  7. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(二)用户接口层之RtspClient类及其构造函数

    RtspClient类是myRTSPClient函数库所有特性集中实现的地方. 主要为用户提供: 1. RTSP协议通信接口函数,如DoOPTIONS(): 2. RTSP账号.密码设置函数,如Set ...

  8. 借助VBScript让Windows系统发出声音

    借助VBScript让Windows系统发出声音.. 文件I Love You.VBS中的内容是: CreateObject("SAPI.SpVoice").Speak" ...

  9. Andrew Ng机器学习课程笔记--week10(优化梯度下降)

    本周主要介绍了梯度下降算法运用到大数据时的优化方法. 一.内容概要 Gradient Descent with Large Datasets Stochastic Gradient Descent M ...

  10. web前端笔记整理---CSS

    一   Css  文件 Css: 美化HTML的 4种选择器: 元素选择 类选择 ID选择 伪类选择 常用的布局方案 1 写在什么位置能好用. 1.1 元素里面 优先级是最高的 1.2 元素外,文件内 ...