package com.demo;

import java.io.*;
import java.sql.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
@WebServlet("/queryproduct.do")
public class QueryProductServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
Connection dbconn = null;
public void init() {
String driver = "com.jdbc.mysql.Driver";
String dburl = "jdbc:mysql://localhost:3306/prod_data";
String username = "root";
String password = "123456";
try{
Class.forName(driver); // 加载驱动程序
// 创建连接对象
dbconn = DriverManager.getConnection(dburl,username,password);
}catch(ClassNotFoundException e1){
System.out.println(e1);
}catch(SQLException e2){}
} public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
String productid = request.getParameter("productid");
try{
String sql="SELECT * FROM products WHERE prod_id = ?";
PreparedStatement pstmt = dbconn.prepareStatement(sql);
pstmt.setString(1,productid);
ResultSet rst = pstmt.executeQuery();
//System.out.println(sql);
if(rst.next()){
Product product = new Product();
product.setProd_id(rst.getString("prod_id"));
product.setPname(rst.getString("pname"));
product.setPrice(rst.getDouble("price"));
product.setStock(rst.getInt("stock"));
request.getSession().setAttribute("product", product);
response.sendRedirect("displayProduct.jsp");
}else{
response.sendRedirect("error.jsp");
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head><title>商品查询</title></head>
<body>
<form action = "queryproduct.do" method="post">
请输入商品号:
<input type = "text" name="productid" size="15">
<input type = "submit" value = "确定">
</form>
</body>
</html>
package com.demo;

import java.io.Serializable;

public class Product implements Serializable{
private String prod_id;
private String pname;
private double price;
private int stock;
public Product(){} public Product(String prod_id, String pname, double price, int stock) {
this.prod_id = prod_id;
this.pname = pname;
this.price = price;
this.stock = stock;
} public String getProd_id() {
return prod_id;
} public void setProd_id(String prod_id) {
this.prod_id = prod_id;
} public String getPname() {
return pname;
} public void setPname(String pname) {
this.pname = pname;
} public double getPrice() {
return price;
} public void setPrice(double price) {
this.price = price;
} public int getStock() {
return stock;
} public void setStock(int stock) {
this.stock = stock;
}
}

错误如下:

(待解决)IDEA配置JDBC查询数据库PreparedStatement pstmt = dbconn.prepareStatement(sql)出现空指针错误的更多相关文章

  1. Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)

    Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子   时间:2012-11-20 17:54:02   Java 通过JDBC查询数据库表结构(字段名称,类型,长 ...

  2. 用JDBC查询数据库

    JDBC API的核心组件:1.DriverManager类:用语跟踪可用的JDBC驱动程序并产生数据库连接. 2.Connection接口:用于取得数据库信息.生成数据库语句,并管理数据库事务. 3 ...

  3. 附加数据库时,提示“Microsoft SQL Server,错误: 5120”, 解决方案

    错误的提示内容为:

  4. JDBC 查询的三大参数 setFetchSize prepareStatement(String sql, int resultSetType, int resultSetConcur)

    JDBC 查询的三大参数 本文转载至 http://blog.csdn.net/turkeyzhou/article/details/5115228 DBC1.0 .JDBC2.0 .JDBC3.0  ...

  5. JDBC查询数据库中的数据

    只用JDBC技术查询表中的全部内容时,需要使用查询全部的SQL语句,把查询结果放到List集合中. package qddx.JDBC; import java.util.*; import java ...

  6. 查询数据库游标使用情况以及sql

    ----查询游标使用情况以及游标最大数---- SELECT MAX(A.VALUE) AS HIGHEST_OPEN_CUR, P.VALUE AS MAX_OPEN_CUR FROM V$SESS ...

  7. javaweb三、JDBC访问数据库

    JDBC是J2SE的内容,是由java提供的访问数据库的接口,但没有提供具体的实现方法,需要数据库厂商提供,就是对应的数据库驱动. 这样的好处是可以方便的更换数据库,提高了扩展性.这也是面向接口编程的 ...

  8. MySQL_(Java)使用JDBC向数据库中修改(update)数据

    MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...

  9. MySQL_(Java)使用JDBC向数据库中删除(delete)数据

    MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...

随机推荐

  1. 黑客攻防技术宝典web实战篇:攻击本地编译型应用程序习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 如果不采用特殊的防御措施,为什么栈缓冲区溢出比堆溢出更容易被攻击者利用? 利用基于栈的溢出 ...

  2. Vue-CLI3详解

    vue-cli3快速开始 node 安装,略. webpack 安装webpack npm install webpack webpack-cli -g 查看版本 webpack -v vue-cli ...

  3. C++面向对象程序设计举例

    [例8.1]最简单的例子. #include <iostream> using namespace std; class Time //定义Time类 { public : //数据成员为 ...

  4. The 17th Zhejiang University Programming Contest Sponsored by TuSimple J

    Knuth-Morris-Pratt Algorithm Time Limit: 1 Second      Memory Limit: 65536 KB In computer science, t ...

  5. noip初赛

    运算符       联结词名称 异或 ⊕       非¬(-)     否定 与∧(·) 对应集合∩交集 对应按位与符号& 合取 或∨(+) 对应集合∪并集 对应按位或符号| 析取 条件→ ...

  6. Codeforces Round #325 (Div. 2)

    水 A - Alena's Schedule /************************************************ * Author :Running_Time * Cr ...

  7. 水题 Codeforces Round #303 (Div. 2) D. Queue

    题目传送门 /* 比C还水... */ #include <cstdio> #include <algorithm> #include <cstring> #inc ...

  8. [转].NET MVC 分页以及增删查改

    本文转自:http://blog.csdn.net/sust2012/article/details/30761867 . 数据库操作,DAL 层: using System; using Syste ...

  9. P2667 超级质数

    https://www.luogu.org/problem/show?pid=2667 题目背景 背景就是描述,描述就是背景...... 题目描述 一个质数如果从个位开始,依次去掉一位数字,两位数字, ...

  10. JavaScript禁止键入非法值,只有这些才能被键入

    JavaScript禁止键入非法值,只有这些才能被键入(k==9)||(k==13)||(k==46)||(k==8)||(k==189)||(k==109)||(k==190)||(k==110)| ...