求助求助。。
我是刚学javaweb的。。遇到了个小问题,。。在连接数据库执行查询时,
只要是中文的就不能查出结果来,拼音数字就可以,在别人的机器上就能用中文查询,这到底是什么原因呢?
代码如下:
jsp主页
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gb2312"%>
<%@ page import="dao.ProductDao" %>
<%@ page import="beans.Product" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%
ProductDao productDao=new ProductDao();
ArrayList products=productDao.queryAllProducts();
%>
产品信息<br>
<table border=2>
<tr>
<td>productID</td>
<td>productName</td>
<td>madeTime</td>
<td>price</td>
</tr>
<%
for(int i=0;i<products.size();i++){
Product product=(Product)products.get(i);
%>
<tr>
<td><%= product.getProductID() %></td>
<td><%= product.getProductName() %></td>
<td><%= product.getMadetime() %></td>
<td><%= product.getPrice() %></td>
</tr>
<%
}
%>
</table>
<!-- <form action="product.jsp" method="post">
请您选择你要查询的产品名称:<input name="productName" type="text"><br>
<input type="submit" value="查询">
</form> -->
<form action="Fuzzy.jsp" method="post">
请您选择你要模糊查询的产品名称:<input name="productName" type="text"><br>
<input type="submit" value="查询">
</form>
<form action="deleteProduct.jsp" method="post">
请您选择你要删除的产品编号:<input name="productID" type="text"><br>
<input type="submit" value="删除">
</form>
<form action="addProduct.jsp" method="post">
请您添加产品:productID<input name="productID" type="text"><br>
productName<input name="productName" type="text"><br>
madeTime<input name="madetime" type="text"><br>
price <input name="price" type="text"><br>
<input type="submit" value="添加">
</form>
</body>
</html>
模糊查询
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="dao.ProductDao" %>
<%@ page import="beans.Product" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<%
String productName=request.getParameter("productName");
productName=new String(productName.getBytes("ISO-8859-1"));
ProductDao productDao=new ProductDao();
ArrayList products=productDao.queryFuzzy(productName);
%>
这是你要查询的产品信息
<table border=2>
<tr>
<td>productID</td>
<td>productName</td>
<td>madeTime</td>
<td>price</td>
</tr>
<%
for(int i=0;i<products.size();i++){
Product product=(Product)products.get(i);
%>
<tr>
<td><%= product.getProductID() %></td>
<td><%= product.getProductName() %></td>
<td><%= product.getPrice() %></td>
<td><%= product.getMadetime() %></td>
</tr>
<%} %>
</table>
</body>
</html>
javabean代码
product.java
package beans;
public class Product {
private String productID;
private String productName;
private String madetime;
private double price;
public String getProductID(){
return productID;
}
public void setProductID(String productID){
this.productID=productID;
}
public String getProductName(){
return productName;
}
public void setProductName(String productName){
this.productName=productName;
}
public String getMadetime(){
return madetime;
}
public void setMadetime(String madetime){
this.madetime=madetime;
}
public double getPrice(){
return price;
}
public void setPrice(double price){
this.price=price;
}
}
productDAO.java
package dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.sql.DriverManager;
import beans.Product;
public class ProductDao {
Connection conn=null;
ArrayList products=new ArrayList();
public void lianjie()throws Exception{//获取连接
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/product";
conn=DriverManager.getConnection(url,"root","root");
}
public ArrayList queryAllProducts() throws Exception{//查询显示全部产品
try{
//获取连接
lianjie();
//运行SQL语句,条件查询
String sql="select *from product";
Statement stat=conn.createStatement();
ResultSet rs=stat.executeQuery(sql);
while(rs.next()){
Product product=new Product();
product.setProductID(rs.getString("productID"));
product.setProductName(rs.getString("productName"));
product.setMadetime(rs.getString("madetime"));
product.setPrice(rs.getDouble("price"));
products.add(product);
}
rs.close();
stat.close();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(conn!=null){
conn.close();
conn=null;
}
}catch(Exception ex){
}
}
return products;
}
public ArrayList queryCondition(String productName) throws Exception{//条件查询
try{
//获取连接
lianjie();
//运行SQL语句,条件查询
// productName=new String(productName.getBytes("ISO-8859-1"),"UTF-8");
String sql="select *from product where productName='"+productName+"'";
Statement stat=conn.createStatement();
ResultSet rs=stat.executeQuery(sql);
while(rs.next()){
Product product=new Product();
product.setProductID(rs.getString("productID"));
product.setProductName(rs.getString("productName"));
product.setMadetime(rs.getString("madetime"));
product.setPrice(rs.getDouble("price"));
products.add(product);
}
rs.close();
stat.close();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(conn!=null){
conn.close();
conn=null;
}
}catch(Exception ex){
}
}
return products;
}
public ArrayList queryFuzzy(String productName) throws Exception{
//模糊查询
try{
//获取连接
lianjie();
//运行SQL语句,模糊查询
String sql="select * from product where productName like '%"+productName+"%'";
Statement stat=conn.createStatement();
ResultSet rs=stat.executeQuery(sql);
while(rs.next()){
Product product=new Product();
product.setProductID(rs.getString("productID"));
product.setProductName(rs.getString("productName"));
product.setMadetime(rs.getString("madetime"));
product.setPrice(rs.getDouble("price"));
products.add(product);
}
rs.close();
stat.close();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(conn!=null){
conn.close();
conn=null;
}
}catch(Exception ex){
}
}
return products;
}
public int deleteProduct(String productID) throws Exception{
//删除
try{
//获取连接
lianjie();
//运行SQL语句,删除
String sql1="delete from product where productID='"+productID+"'";
Statement stat=conn.createStatement();
stat.executeUpdate(sql1);
stat.close();
conn.close();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(conn!=null){
conn.close();
conn=null;
}
}catch(Exception ex){
}
}
return 0;
}
public int addProduct(String productID,String productName,String madetime,String price) throws Exception{
//添加
try{
//获取连接
lianjie();
//运行SQL语句,添加
String sql1="insert into product values('"+productID+"','"+productName+"','"+madetime+"','"+price+"')";
Statement stat=conn.createStatement();
System.out.print(sql1);
stat.executeUpdate(sql1);
stat.close();
conn.close();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(conn!=null){
conn.close();
conn=null;
}
}catch(Exception ex){
}
}
return 0;
}
}
数据库,,我用的是Navicat for MySQL
/*
Navicat MySQL Data Transfer
Source Server : test
Source Server Version : 50152
Source Host : localhost:3306
Source Database : myproduct
Target Server Type : MYSQL
Target Server Version : 50152
File Encoding : 65001
Date: 2012-10-09 21:27:03
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `product`
-- ----------------------------
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
`productID` char(10) NOT NULL,
`productName` char(10) DEFAULT NULL,
`madeTime` datetime DEFAULT NULL,
`price` float(8,0) DEFAULT NULL,
PRIMARY KEY (`productID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of product
-- ----------------------------
INSERT INTO `product` VALUES ('001', '海尔笔记本', '2000-09-12 00:00:00', '2235');
INSERT INTO `product` VALUES ('002', '联想电脑', '2008-10-01 00:00:00', '14560');
INSERT INTO `product` VALUES ('003', '电视机', '2009-11-09 00:00:00', '2678');
INSERT INTO `product` VALUES ('004', 'ipone', null, '3000');
INSERT INTO `product` VALUES ('005', 'IPad', null, '5000');
INSERT INTO `product` VALUES ('006', '希望成功', null, '30000');
请高手指教,,是我的机器问题还是怎么了?模糊查询不了中文的,拼音就可以查到结果。
--------------------编程问答-------------------- 用到的开发工具的编码最好统一,并且选择支持中文的 --------------------编程问答-------------------- 应该是乱码问题,设置一下编码 --------------------编程问答--------------------
即使我把gb2312都改成UTF-8也不行啊。。 --------------------编程问答-------------------- 即使我把gb2312都改成UTF-8也不行啊。。 --------------------编程问答-------------------- 乱码问题,这是一个初学者最常犯的错.
你要保持:数据库编码、存数据的编码和取时的编码都要统一,不然就会乱码。
你可以在建表时设置一下编码格式,读时也要用相应的编码。
你不要找了,你就直接重新来一遍~ --------------------编程问答--------------------
debug跟一下,看是在哪一步出现乱码的,,,还有就是你的开发工具和服务器等编码也要统一, --------------------编程问答-------------------- 服务器编码,google下,tomcat的话添加URIEncoding="UTF-8"
补充:Java , Web 开发