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

重点:操作数据库主要用的是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. 从 Vue 1.x 迁移 — Vue.js

    闲聊: 又到周五啦,明天不用上班啦哈哈哈哈哈,想想就好开心啊,嘻嘻,小颖这周三的早晨做个一个美梦,把自己愣是笑醒了,梦的大概剧情我忘记了,总之宝宝是被笑醒的,行了之后还傻笑了一段时间,真希望每天早上都 ...

  2. Scrapy提取多个标签的text

    对于要提取嵌套标签所有内容的情况, 使用string或//text(), 注意两者区别 >>> from scrapy import Selector >>> &g ...

  3. 带你快速进入.net core的世界

    [申明]:本人.NET Core小白.Linux小白.MySql小白.nginx小白.而今天要说是让你精通Linux ... 的开机与关机.nginx安装与部署.Core的Hello World .. ...

  4. VM虚拟机的配置

    1.软件安装 点击如图所示文件安装虚拟机 点击下一步,再安装过程中输入密钥 1F04Z-6D111-7Z029-AV0Q4-3AEH8 设置相关内容完成安装 2.加载虚拟机 点击软件图标打开软件 软件 ...

  5. Json 查看Json的插件

    # 写写写写写,每个人有每个人写东西的方式,这些都是好的方式.需要感谢的人有几个,对我的成长有启发,所以我也会把能够想到.接触到的东西告诉team里面的人.新人,然后这些人又可以把这些东西传递给下一波 ...

  6. 一些常用的集合工具的代码块(缓慢更新XD)

    鱼的记忆   我发现在项目中常常要用到一些集合的处理,不同的项目我经常会编写自己的集合工具代码块,后来我发现我总是在写一样的代码块(可能是我记性不好吧:),毕竟鱼的记忆只有7秒),所以我意识到了是时候 ...

  7. 如何在.xml中配置Servlet信息

    在编写好servlet文件后需要在web.xml文件下配置servlet,才能使servlet在服务器上运行.基本配置方式如下所示 <context-param> <param-na ...

  8. sed 实践案例 (不定期更新)

    删除每行第一个字符 sed -r 's/^.//g' /etc/passwd 删掉每行第二个字符 sed -r 's/^(.)(.)/\1/g' /etc/passwd 删掉每行最后一个字符 sed ...

  9. SpringMVC(四)-- 文件下载、自定义拦截器、异常处理

    1.文件下载 用ResponseEntity<byte[]> 返回值完成文件下载 具体参见本博客之前的<文件上传下载> @RequestMapping(value=" ...

  10. Android笔记: fragment简单例子

    MainActivity.java public class MainActivity extends Activity { @Override protected void onCreate(Bun ...