当前位置:编程学习 > JAVA >>

求助求助。。

我是刚学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');


请高手指教,,是我的机器问题还是怎么了?模糊查询不了中文的,拼音就可以查到结果。

--------------------编程问答-------------------- 用到的开发工具的编码最好统一,并且选择支持中文的 --------------------编程问答-------------------- 应该是乱码问题,设置一下编码 --------------------编程问答--------------------
引用 1 楼 vsddvsd 的回复:
用到的开发工具的编码最好统一,并且选择支持中文的

即使我把gb2312都改成UTF-8也不行啊。。 --------------------编程问答--------------------
引用 2 楼 wujj_123 的回复:
应该是乱码问题,设置一下编码
即使我把gb2312都改成UTF-8也不行啊。。 --------------------编程问答-------------------- 乱码问题,这是一个初学者最常犯的错.
你要保持:数据库编码、存数据的编码和取时的编码都要统一,不然就会乱码。
你可以在建表时设置一下编码格式,读时也要用相应的编码。
你不要找了,你就直接重新来一遍~ --------------------编程问答--------------------
引用 3 楼 abcd533 的回复:
引用 1 楼 vsddvsd 的回复:用到的开发工具的编码最好统一,并且选择支持中文的
即使我把gb2312都改成UTF-8也不行啊。。

debug跟一下,看是在哪一步出现乱码的,,,还有就是你的开发工具和服务器等编码也要统一, --------------------编程问答-------------------- 服务器编码,google下,tomcat的话添加URIEncoding="UTF-8"
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,