这些年一直在做移动方面的开发,发现原来做Web时那些个种种都忘光光了,呵呵,不能忘本,从今天开始把之前学到的一些东西总结总结,从最基础的JDBC开始吧,尽管JDBC几乎应该时不会有人用了,不过既然时基础,自然有其道理,很多框架,比如hibernate其实也就是在其上套了一层而已。
1.准备数据库,看来看去还是mySQL顺眼,什么Oracel太大,用的地方也不多,大部分企业mySQL足够了
mySQL如今已经给oracle收购了!我是多久没关注web了,罪过!
https://dev.mysql.com/downloads/mysql/
霹雳啪啦一顿装,搞定它
2.建一个简单的数据库(mysql有一个自动的cmd工具可以用,除非是远程操作,本地直接用就行了)
mysql>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mytestdb |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
7 rows in set (0.00 sec)
然后又是霹雳啪啦
mysql> use mytestdb
Database changed
mysql> create table user(id int not null primary key, name char(20));
Query OK, 0 rows affected (0.05 sec)
mysql> show tables
-> ;
+--------------------+
| Tables_in_mytestdb |
+--------------------+
| t_user |
| user |
+--------------------+
2 rows in set (0.00 sec)
差不多就这么建好了,有一个要注意的地方,sql语句是要以;结束的,我给老忘了这事
3. 准备Java这边吧
首先需要一个mysql和java连接的jar包
C:\Program Files (x86)\MySQL\Connector.J 5.1 这个目录下就能找到,不用去网上下了,若没有,可以自带的什么conector再下一个
然后buidpath一下,把它加到依赖库里面
然后建两个类,把DBhelper.java放到db package下
package com.nullpointsun.app.db;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
public class DBHelper {
/*
* SQL数据库的地址,这里后面是可以跟很多参数的 建议有空还是看一下官网,可能有些参数有用
** https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-
* configuration-properties.html
*/
private static final String URL = "jdbc:mysql://127.0.0.1:3306/mytestdb";
// 用户名密码
private static final String USR = "root";
private static final String PASW = "root";
public static Connection conn;
public static DBHelper dbHelper;
// 连接数据库
private DBHelper() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = (Connection) DriverManager.getConnection(URL, USR, PASW);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("DB connect successful!");
}
public synchronized static DBHelper getInstance() {
if (dbHelper == null) {
dbHelper = new DBHelper();
}
return dbHelper;
}
// 断开数据库
public void closeDB() {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//直接丢SQL语句到这里就可以了, update是更新执行
//executeUpdate(String sql)会返回一个int值,这个值是执行语句描述会影响哪些行,若-1表示执行失败
public int executeUpdateSQL(String sql) {
if (conn != null) {
try {
Statement sm = (Statement) conn.createStatement();
return sm.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
return -2;
}
} else {
System.out.println("connection is null!");
return -2;
}
}
//查询语句
public ResultSet executeQuerySQL(String sql) {
if (conn != null) {
try {
Statement sm = (Statement) conn.createStatement();
return sm.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
} else {
System.out.println("connection is null!");
return null;
}
}
}
package com.nullpointsun.app;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.nullpointsun.app.db.DBHelper;
public class Main {
public static void main(String[] args) {
DBHelper db = DBHelper.getInstance();
ResultSet rs = null;
//删除限制表里面所有的记录
String delete = "delete from user where 1=1";
db.executeUpdateSQL(delete);
//插入5条记录
String sql_insrt1 = "insert into user values (1, 'jeff')";
String sql_insrt2 = "insert into user values (2, 'nullpointer')";
String sql_insrt3 = "insert into user values (3, 'jasky')";
String sql_insrt4 = "insert into user values (4, 'Tom')";
String sql_insrt5 = "insert into user values (5, 'Jarry')";
db.executeUpdateSQL(sql_insrt1);
db.executeUpdateSQL(sql_insrt2);
db.executeUpdateSQL(sql_insrt3);
db.executeUpdateSQL(sql_insrt4);
db.executeUpdateSQL(sql_insrt5);
//查询一下现况
String sql_query = "select * from user";
rs = db.executeQuerySQL(sql_query);
try {
while (rs.next()) {
System.out.println("id=" + rs.getInt(1) + ", name=" + rs.getString(2));
}
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("********************************************");
//更新表
String sql_update = "update user set name='HelloKity' where id=4";
db.executeUpdateSQL(sql_update);
//删除一条记录
String sql_detele_2 = "delete from user where name=\"nullpointer\"";
db.executeUpdateSQL(sql_detele_2);
//再查一下
rs = db.executeQuerySQL(sql_query);
try {
while (rs.next()) {
System.out.println("id=" + rs.getInt(1) + ", name=" + rs.getString(2));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
基本用就这么用后面看到再总结更新这篇文章吧
用JDBC呢,其实还是用SQL语句和数据库打交道,每句话都能看的很清楚,就是显得不OO了,特别是若对象一堆子属性的时候,估计sql语句拼起来是非常费劲的事情,想象一下字符串和变量的拼接吧,各种“”和+,里面还得各种转义字符,后期维护是个头大的事情啊,所以人家发明hibernate也不是没事撑着的,哈哈!
P.S.
关于mysql里面声明主键非空自增长,老是记不住,废话不用能记住个鬼,懒的查留一个
id int auto_increment not null primary key