how2j.cn


工具版本兼容问题
JDBC (Java DataBase Connection) 是通过JAVA访问数据库


所以需要对数据库有基本的理解和应用



Mysql是常见的数据库,在中小型网站经常被使用。
如果以前没有接触过Mysql,请参考 MySQL入门 章节的学习
其中包含了mysql 服务器安装客户端安装创建数据库创建表,以及常用的sql语句
MySQL


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2019-11-21 交作业
耳边风

关于 JAVA 中级-JDBC-MySQL 的提问



如题 CREATE TABLE item ( id int(11) AUTO_INCREMENT, name varchar(30) , price int(11) , PRIMARY KEY (id) ) DEFAULT CHARSET=utf8;
package jdbc;

public class Item {
	//增加id属性
    public int id;
	public String name = "物品";//名字
	public int price = 100; //价格
}


package jdbc;

import java.util.List;
import jdbc.Item;
public interface DAO2 {
	//增加
    public void add(Item item);
    //修改
    public void update(Item item);
    //删除
    public void delete(int id);
    //获取
    public Item get(int id);
    //查询
    public List<Item> list();
    //分页查询
    public List<Item> list(int start, int count);
}


package jdbc;
  
import java.sql.Connection;
 
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
  
import jdbc.Item;
  
public class ItemDAO implements DAO2{
  
    public ItemDAO() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
  
    public Connection getConnection() throws SQLException {
        return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root",
                "admin");
    }
  
    public int getTotal() {
        int total = 0;
        try (Connection c = getConnection(); Statement s = c.createStatement();) {
  
            String sql = "select count(*) from Item";
  
            ResultSet rs = s.executeQuery(sql);
            while (rs.next()) {
                total = rs.getInt(1);
            }
  
            System.out.println("total:" + total);
  
        } catch (SQLException e) {
  
            e.printStackTrace();
        }
        return total;
    }
  
    public void add(Item item) {
  
        String sql = "insert into hero values(null,?,?)";
        try (Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
  
            ps.setString(1, item.name);
            ps.setInt(2, item.price);
           
  
            ps.execute();
  
            ResultSet rs = ps.getGeneratedKeys();
            if (rs.next()) {
                int id = rs.getInt(1);
                item.id = id;
            }
        } catch (SQLException e) {
  
            e.printStackTrace();
        }
    }
  
    public void update(Item item) {
  
        String sql = "update item set name= ?, price = ? ";
        try (Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
  
        	ps.setString(1, item.name);
            ps.setInt(2, item.price);
  
            ps.execute();
  
        } catch (SQLException e) {
  
            e.printStackTrace();
        }
  
    }
  
    public void delete(int id) {
  
        try (Connection c = getConnection(); Statement s = c.createStatement();) {
  
            String sql = "delete from item where id = " + id;
  
            s.execute(sql);
  
        } catch (SQLException e) {
  
            e.printStackTrace();
        }
    }
  
    public Item get(int id) {
        Item item = null;
  
        try (Connection c = getConnection(); Statement s = c.createStatement();) {
  
            String sql = "select * from item where id = " + id;
  
            ResultSet rs = s.executeQuery(sql);
  
            if (rs.next()) {
                item = new Item();
              
                String name = rs.getString(2);             
                int price = rs.getInt(3);
                
                item.name = name;
                item.price = price;
            }
  
        } catch (SQLException e) {
  
            e.printStackTrace();
        }
        return item;
    }
  
    public List<Item> list() {
        return list(0, Short.MAX_VALUE);
    }
  
    public List<Item> list(int start, int count) {
        List<Item> items = new ArrayList<Item>();
  
        String sql = "select * from item order by id desc limit ?,? ";
  
        try (Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
  
            ps.setInt(1, start);
            ps.setInt(2, count);
  
            ResultSet rs = ps.executeQuery();
  
            while (rs.next()) {
                Item item = new Item();
                int id = rs.getInt(1);
                String name = rs.getString(2);             
                int price = rs.getInt(3);
                item.id = id;
                item.name = name;
                item.price = price;
                items.add(item);
            }
        } catch (SQLException e) {
  
            e.printStackTrace();
        }
        return items;
    }
  
}



							





回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-04-28 MySQL可以用SQL server代替么??
俗人

关于 JAVA 中级-JDBC-MySQL 的提问
这两个数据库管理软件有区别么,用java编程的话用MySQL比较好?




2 个答案

15691591183
答案时间:2019-08-05
更换不同的驱动jar包就好,百度“jdbc sql server”

寻水de鱼
答案时间:2019-05-15
大同小异



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2019-04-02 大家好我是林志辉
2018-09-18 jdbc全称




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 中级-JDBC-MySQL 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 881555796
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图