Mysql基本语法与当前市场上的各大主流的关系型数据库差不多,如果你已经掌握SQL server或oracle数据库,那Mysql的基本语法学习起来就非常轻松了;如果你掌握一门编程语言(C++、Java、Python)那Mysql的语法就是小巫见大巫了。本篇主要由浅入深的学习java中的JDBC(Java DataBase Connection)与Mysql的关联与优化。
// 注册MySQL驱动 (可以省略这一步)
Class.forName("com.mysql.jdbc.Driver");
// 连接MySQL服务器
String username= "root";
String password = "a1b2c3";
String connectionUrl =
"jdbc:mysql://127.0.0.1:3306/af_school?useUnicode=true&characterEncoding=UTF-8";
Connection conn = DriverManager.getConnection(connectionUrl, username, password);
System.out.println("连接成功!");
说明:jdbc:mysql://127.0.0.1:3306/af_school?useUnicode=true&characterEncoding=UTF-8
127.0.0.1:host,服务器地址
3306:mysql默认端口号
af_school:指定的数据库
useUnicode=true&characterEncoding=UTF-8:字符编码指定
// 数据库查询, Statement语句 ResultSet结果集
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM student");
//如果有数据,rs.next()返回true
while(rs.next())
{
// 取出这一行记录
int id = rs.getInt("id");
String name = rs.getString("name");
String phone = rs.getString("phone"); // 可能为null
Date birthday = rs.getDate("birthday");
}
//编写sql语句
String sql = "INSERT INTO student(`id`,`name`,`birthday`) "
+ "VALUES ('20181200', '韩', '1997-4-19') ";
System.out.println("SQL: "+ sql);
//执行insert into sql语句
Statement stmt = conn.createStatement();//与数据库交互
stmt.execute(sql);
int count = stmt.getUpdateCount();
System.out.println("受影响的行数为: " + count);
//编写sql语句
String sql =
"UPDATE student SET `name`=’沈’ , `birthday`=’1997-09-01’ WHERE `id` = 20180001 ";
System.out.println("SQL: "+ sql);
//执行UPDATE sql语句
Statement stmt = conn.createStatement(); //与数据库交互
stmt.execute(sql);
int count = stmt.getUpdateCount();
System.out.println("受影响的行数为: " + count);
conn.Close();
System.out.println(“关闭数据库连接”);
说明:这里的conn就是前面①创建的conn
以上就是JDBC与MySQL最基本的连接、操作、关闭方法;接下来介绍预处理查询的方法。
// 注册MySQL驱动 (可以省略这一步)
Class.forName("com.mysql.jdbc.Driver");
// 连接MySQL服务器
String username= "root";
String password = "a1b2c3";
String connectionUrl =
"jdbc:mysql://127.0.0.1:3306/af_school?useUnicode=true&characterEncoding=UTF-8";
Connection conn = DriverManager.getConnection(connectionUrl, username, password);
System.out.println("连接成功!");
//预处理查询
// 1 构造一个SQL, 参数值用?号代替,称为占位符
String sql = "INSERT INTO student (id,name,birthday) VALUES (?, ?, ?) ";
// 2 创建 PreparedStatement 对象 ( 与MySQL产生一次交互 )
PreparedStatement ptmt = conn.prepareStatement(sql);
// 3 设置参数值
ptmt.setInt(1, 20183001);
ptmt.setString(2, "小新");
ptmt.setString(3, "1993-3-10");
// 4 执行查询
ptmt.execute();
//关闭连接释放资源
conn.close();
System.out.println("关闭连接!");
说明:由以上代码可知,JDBC的预处理查询的方法就是提前与数据库进行交互(指定了SQL语句的模版),之后就可以进行多次的相同操作(这里就是向数据库中插入数据)而不用重复的与数据库交互(conn.createStatement();)。
为什么要这样做呢?
我们知道与数据库进行交互相较与sql执行操作是很费时间的(不信可以用Calendar calendar=Calendar.getInstance(); long time=calendar.getTimeInMillis(); 来进行测试,不过前提是数据表中的数据不能太多上万条以上…),于是当我们要进行相同的sql操作时当然选择预处理查询的方式应该更加有效。
注:并不是所有的数据库都支持预处理查询技术(MySQL是支持的),如果你所用的数据库不支持,那么用预处理查询并不会报错,而是会按照普通的方式来进行一次数据库交互一次execute()。
下接JDBC的拓展知识见:https://blog.csdn.net/biggerchong/article/details/83831698
感谢您的学习!欢迎一起探讨!