打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在处理jsp读取mysql中遇到的问题记录

在我第一次使用jdbc,来通过jsp读取mysql中遇到一些问题记录一下。

首先都是一个DBHelper.java的工具类,

package util;

import java.sql.Connection;

import java.sql.DriverManager;

public class DBHelper {

private static final String driver = "com.mysql.jdbc.Driver";//数据库驱动

//连接数据库的URL地址

private static final  String url = "jdbc:mysql://localhost:3306/jiang?useUnicode=true&characterEncoding=UTF-8&useSSL=false";

//数据库的用户名

private static final  String username = "root";

//数据库的密码

private static final  String password = "123456";

private static Connection conn = null;

//静态代码块负责加载驱动

static {

try {

Class.forName(driver);

}catch(Exception ex) {

ex.printStackTrace();

}

}

public static Connection getConnection() throws Exception {

if(conn==null) {

conn = DriverManager.getConnection(url, username, password);

return conn;

}

return conn;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

try {

Connection conn = DBHelper.getConnection();

if(conn!=null) {

System.out.println("数据库连接正常");

}else {

System.out.println("数据库连接失败");

}

}catch(Exception ex){

ex.printStackTrace();

}

}

}


先记录一下 查询:

package dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import Heros.Hero;

import util.DBHelper;

//英雄的业务逻辑类

public class HeroDAO {

public ArrayList<Hero> getAllHeros(){

Connection conn=null;

PreparedStatement stmt = null;

ResultSet rs = null;//数据集

ArrayList<Hero> list = new ArrayList<Hero>();//英雄集合

try {

conn = DBHelper.getConnection();

String sql = "select * from  hero";//Sql语句

//String sql = "select * from  Hero where year=2016";//Sql语句

stmt = conn.prepareStatement(sql);//创建连接对象

rs = stmt.executeQuery();

while(rs.next()) {

Hero hero = new Hero();

hero.setId(rs.getInt("id"));

hero.setYear(rs.getString("year"));

hero.setName(rs.getString("name"));

hero.setPolicital(rs.getString("policital"));

hero.setJob(rs.getString("job"));

hero.setDieYear(rs.getDate("dieYear"));

hero.setPicture(rs.getString("picture"));

hero.setStory(rs.getString("story"));

list.add(hero);

}

return list;

}catch(Exception ex) {

ex.printStackTrace();

return null;

}

finally {

//释放数据集对象

if(rs!=null) {

try {

rs.close();

rs=null;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//释放语句对象

if(stmt!=null) {

try {

stmt.close();

stmt=null;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

//-----------------------------------------------------------------

//根据英雄编号获取英雄信息

public Hero GetHerosByID(String id) {

Connection conn=null;

PreparedStatement stmt = null;

ResultSet rs = null;//数据集

try {

conn = DBHelper.getConnection();

String sql = "select * from  hero where id=?;";//Sql语句

stmt = conn.prepareStatement(sql);//创建连接对象

stmt.setString(1, id);  //这里指定这个stmt要接收一个string类型的参数

// 也可以指定stmt.setInt(1,id);   指定stmt要接收一个int类型的参数数,意思是编号从1开始

rs = stmt.executeQuery();

if(rs.next()) {

Hero hero = new Hero();

hero.setId(rs.getInt("id"));

hero.setYear(rs.getString("year"));

hero.setName(rs.getString("name"));

hero.setPolicital(rs.getString("policital"));

hero.setJob(rs.getString("job"));

hero.setDieYear(rs.getDate("dieYear"));

hero.setPicture(rs.getString("picture"));

hero.setStory(rs.getString("story"));

//System.out.println(hero.getStory());

return hero;

}else {

return null;

}

}catch(Exception ex) {

ex.printStackTrace();

return null;

}

finally {

//释放数据集对象

if(rs!=null) {

try {

rs.close();

rs=null;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//释放语句对象

if(stmt!=null) {

try {

stmt.close();

stmt=null;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

//-----------------------------------------------------------------

//-----------------------------------------------------------------

//根据年份获取英雄信息

public ArrayList<Hero> GetHerosByYear(String year) {

Connection conn=null;

PreparedStatement stmt = null;

ResultSet rs = null;//数据集

ArrayList<Hero> list = new ArrayList<Hero>();//英雄集合

try {

conn = DBHelper.getConnection();

String sql = "select * from  hero where year=?;";//Sql语句

//String sql = "select * from  Hero where year=2016";//Sql语句

stmt = conn.prepareStatement(sql);//创建连接对象

stmt.setString(1, year);

rs = stmt.executeQuery();

while(rs.next()) {

Hero hero = new Hero();

hero.setId(rs.getInt("id"));

hero.setYear(rs.getString("year"));

hero.setName(rs.getString("name"));

hero.setPolicital(rs.getString("policital"));

hero.setJob(rs.getString("job"));

hero.setDieYear(rs.getDate("dieYear"));

hero.setPicture(rs.getString("picture"));

hero.setStory(rs.getString("story"));

list.add(hero);

}

return list;

}catch(Exception ex) {

ex.printStackTrace();

return null;

}

finally {

//释放数据集对象

if(rs!=null) {

try {

rs.close();

rs=null;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//释放语句对象

if(stmt!=null) {

try {

stmt.close();

stmt=null;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

//-----------------------------------------------------------------

}

下面的是写入(出现了问题):

1,查询的时候,用的方法是:   rs = stmt.executeQuery();  但是写入的时候,需要用到方法是:stmt.execute();

2,在设置sql语句的时候,一直出错 

Unknown column 'xxx' in 'field list'  。

但是如果我直接从mysql中复制语句过来,比如:

String sql="insert INTO `jiang`.`danmu`(`content`) VALUES ('中国加油!')"; 

就没有问题。纠结死我了。直到后来,发现,写入的内容需要用 单引号包起来。于是,我改成了:(content是形参)

String sql="insert INTO danmu(content) values ('"+content+"')";

下面是记录我的脚本:

package dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import util.DBHelper;

//保存数据内容进入到数据库中去

public class DanMuDao {

public Boolean SaveDanMu(String content) {

Connection conn=null;

PreparedStatement stmt = null;

ResultSet rs = null;//数据集

try {

conn = DBHelper.getConnection();

//String sql="insert INTO `jiang`.`danmu`(`content`) VALUES ('中国加油!')";

String sql="insert INTO danmu(content) values ('"+content+"')";

stmt = conn.prepareStatement(sql);//创建连接对象

stmt.execute();

}catch(Exception ex) {

ex.printStackTrace();

return false;

}finally {

//释放数据集对象

if(rs!=null) {

try {

rs.close();

rs=null;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

//释放语句对象

if(stmt!=null) {

try {

stmt.close();

stmt=null;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return false;

}

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java swing jdbc sql 增删改查 实例1
使用JDBC访问SQLServer 2005
DatabaseDaoImpl操作
JDBC快速入门教程
用java调用oracle存储过程总
用JAVA从数据库中读出字段及内容
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服