java jdbc curd &&学习文档 [翻译]

来源:互联网 发布:android蓝牙接收数据 编辑:程序博客网 时间:2024/06/16 00:38

jdbc教程
https://www.tutorialspoint.com/jdbc/jdbc-sample-code.htm(英文)
http://www.yiibai.com/jdbc/jdbc-sample-code.html#article-start(中文)

jdbc curd示例
http://www.codejava.net/java-se/jdbc/jdbc-tutorial-sql-insert-select-update-and-delete-examples(英文)
http://www.cnblogs.com/sbj-dawn/p/7111990.html(中文)


2 创建一个sampledb

http://blog.csdn.net/qqduxingzhe/article/details/78251057
mysql 5.7.X 安装

执行下面的语句在你的 MySQL Workbench:

create database SampleDB;use SampleDB;CREATE TABLE `users` (    `user_id` int(11) NOT NULL AUTO_INCREMENT,    `username` varchar(45) NOT NULL,    `password` varchar(45) NOT NULL,    `fullname` varchar(45) NOT NULL,    `email` varchar(45) NOT NULL,    PRIMARY KEY (`user_id`));

4 数据库连接

String dbURL = "jdbc:mysql://localhost:3306/sampledb";String username = "root";String password = "secret";try {    Class.forName("com.mysql.jdbc.Driver");    Connection conn = DriverManager.getConnection(dbURL, username, password);    if (conn != null) {        System.out.println("连接OK");    }} catch (SQLException ex) {    ex.printStackTrace();}

之后,关闭

conn.close();

5 执行insert

用户信息:

username: bill
password: secretpass
fullname: Bill Gates
email: bill.gates@microsoft.com

下面是代码:

String sql = "INSERT INTO Users (username, password, fullname, email) VALUES (?, ?, ?, ?)";PreparedStatement statement = conn.prepareStatement(sql);statement.setString(1, "bill");statement.setString(2, "secretpass");statement.setString(3, "Bill Gates");statement.setString(4, "bill.gates@microsoft.com");int rowsInserted = statement.executeUpdate();if (rowsInserted > 0) {    System.out.println("一个新的user 插入成功!");}

// conn.prepareStatement(sql);
// 创建一条预编译的语句,调用 setXXX(xx, xx) 进行数据的填充

// statement.executeUpdate();
// 执行更新、新增、删除
// 返回所操作的 行的数量

PreparedStatement的其他方法:

setBoolean(int parameterIndex, boolean x)setDate(int parameterIndex, Date x)setFloat(int parameterIndex, float x)// ...

6 执行select

代码:

String sql = "SELECT * FROM Users";Statement statement = conn.createStatement();ResultSet result = statement.executeQuery(sql);int count = 0;while (result.next()){    String name = result.getString(2);    String pass = result.getString(3);    String fullname = result.getString("fullname");    String email = result.getString("email");    String output = "User #%d: %s - %s - %s - %s";    System.out.println(String.format(output, ++count, name, pass, fullname, email));}

输出:
User #1: bill - secretpass - Bill Gates - bill.gates@microsoft.com

resultset.next();
// 是否存在下一行,
//(存在,就是有数据)
//(不存在,没数据了,退出while循环)

resultset可以看作二维表,
(自己想象,列头是数据库中的表的每一列 列名称,每一列的索引)
每一行是数据(也称记录)

这里写图片描述

根据数据库中的数据类型,对应的Java数据类型,
选择对应方法,从而拿到数据

username ===> String ===> getString( username索引/ username字符串)

result更多方法

getString(columnIndex/ columnString)getInt(columnIndex/ columnString)getFloat(columnIndex/ columnString)getDate(columnIndex/ columnString)getTimestamp(columnIndex/ columnString)// ...

提示:
getXXX( columnIndex/ columnString);
index 比 String 快


7 执行update

代码:

String sql = "UPDATE Users SET password=?, fullname=?, email=? WHERE username=?";PreparedStatement statement = conn.prepareStatement(sql);statement.setString(1, "123456789");statement.setString(2, "William Henry Bill Gates");statement.setString(3, "bill.gates@microsoft.com");statement.setString(4, "bill");int rowsUpdated = statement.executeUpdate();if (rowsUpdated > 0) {    System.out.println("一个存在的user 更新成功!");}

8 执行delete

代码:删除已存在的 bill

String sql = "DELETE FROM Users WHERE username=?";PreparedStatement statement = conn.prepareStatement(sql);statement.setString(1, "bill");int rowsDeleted = statement.executeUpdate();if (rowsDeleted > 0) {    System.out.println("一个user 删除成功");}

结语

上述就是CURD。

关键点是:

翻译方式:bing翻译
http://www.bing.com/Translator

使用静态 SQL 查询的语句。
对参数化 SQL 查询使用 PreparedStatement, 并使用 setXXX () 方法来设置参数值。
使用 execute () 方法执行常规查询。
使用 executeUpdate () 方法执行插入、更新或删除查询
使用 executeQuery () 方法执行选择查询。
使用结果集循环访问从 SELECT 查询返回的行, 使用它的 next () 方法将其前进到最终集中的下一行, 并使用 getXXX () 方法检索列的值。


end

原创粉丝点击