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. Struts2基本使用

    Struts2:本质servlet 1.接受页面参数 a.使用原生的ServletAPI接受(不推荐) request.getParameter(name) 获取元素request方式: --Http ...

  2. 4种java复制文件的方式

    尽管Java提供了一个可以处理文件的IO操作类,但是没有一个复制文件的方法.复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候.然而有几种方法可以进行Java文件复制操作,下面列举出4中最 ...

  3. poj1564

    dfs判重 #include<stdio.h> #include<iostream> #include<cstdio> #include<queue> ...

  4. 实例List化

    实现了__iter__()的实例虽能用于for循环,看似像list,但并不能将其当做list来使用,比如,Fib()[5]还是报错 可通过实现__getitem__()方法,:来实现让实例像list那 ...

  5. 跟我一起玩Win32开发(16):ListView的多个视图

    在上一个例子中,我们只用到了ListView的Report视图,也就是详细视图.本文我们再把上一篇文章中所用的例子进行一下扩展,例子源码可以到俺的资源区下载. 我们为ListView中显示的数据加上图 ...

  6. hdu 4442 Physical Examination (2012年金华赛区现场赛A题)

    昨天模拟赛的时候坑了好久,刚开始感觉是dp,仔细一看数据范围太大. 题目大意:一个人要参加考试,一共有n个科目,每个科目都有一个相应的队列,完成这门科目的总时间为a+b*(前面已完成科目所花的总时间) ...

  7. Codeforces Round #408 (Div. 2) B

    Description Zane the wizard is going to perform a magic show shuffling the cups. There are n cups, n ...

  8. DataTable数据检索的性能分析[转]

    原文链接 作者写得非常好,我学到了许多东西,这里只是转载! 我们知道在.NET平台上有很多种数据存储,检索解决方案-ADO.NET Entity Framework,ASP.NET Dynamic D ...

  9. iOS中自定义UITableViewCell的用法

    1.先创建一个View继承 UITableViewCell并使用xib快速建立模型. #import <UIKit/UIKit.h> #import "Score.h" ...

  10. Spring------自动化装配Bean(二)

    上一篇是基于 @ComponentScan自动装配Bean的实现,这一篇将通过java手动装配bean来实现. 手动装配相对于自动装配的优点: 可以自行定义Bean的各个属性. 添加额外的方法调度. ...