发表于: 2017-08-08 23:42:09
1 904
今天完成的事
学习JDBC
为项目导入mysql-jdbc的jar包
1初始化驱动
package jdbc;
/**
* Created by yaheng on 2017/8/7.
*/
public class jdbcdirver{
public static void main(String[] args) {
//初始化驱动
try {
//驱动类com.mysql.jdbc.Driver
//就在 mysql-connector-java-5.0.8-bin.jar中
//如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库驱动加载成功 !");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2建立与数据库的连接
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestJdbc {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
// 建立与数据库的Connection连接
// 这里需要提供:
// 数据库所处于的ip:127.0.0.1 (本机)
// 数据库的端口号: 3306 (mysql专用端口号)
// 数据库名称 how2java
// 编码方式 UTF-8
// 账号 root
// 密码 admin
Connection c = DriverManager
.getConnection(
"jdbc:mysql://127.0.0.1:3306/yaheng?characterEncoding=UTF-8",
"root", "0123.");
System.out.println("连接成功,获取连接对象: " + c);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
3JDBC增删改查
代码
public class Sqldemo {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager
.getConnection(
"jdbc:mysql://127.0.0.1:3306/yaheng?characterEncoding=UTF-8",
"root", "0123.");
Statement s = c.createStatement();
// 准备sql语句
// 注意: 字符串要用单引号''
String sql = "INSERT into hero VALUES "+"("+null+","+"'提莫'"+","+700+","+40+")";
s.execute(sql);
System.out.println("执行插入语句成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
将红色代码改为SQL语句中的其他语法完成增 删 改操作,“查”与前三者不同,需要另一种方法 注意它拼接的格式
增
改
删
查
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SelectDemo {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection c = DriverManager.
getConnection("jdbc:mysql://127.0.0.1:3306/yaheng?characterEncoding=UTF-8",
"root",
"0123.");
Statement s = c.createStatement();
String sql = "select id,name,blood,defence from hero";
// 执行查询语句,并把结果集返回给ResultSet
ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");// 可以使用字段名
String name = rs.getString(2);// 也可以使用字段的顺序
float hp = rs.getFloat("blood");
int defence = rs.getInt(4);
System.out.printf("%d\t%s\t%f\t%d%n", id, name, hp, defence );
// 不一定要在这里关闭ReultSet,因为Statement关闭的时候,会自动关闭ResultSet
// rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch(Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
使用完成后要关闭数据库链接和statement,否则数据库资源将被占用
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TernOff {
public static void main(String[] args) {
Connection c = null;
Statement s = null;
try {
Class.forName("com.mysql.jdbc.Driver");
c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/yaheng?characterEncoding=UTF-8", "root",
"0123.");
s = c.createStatement();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 数据库的连接时有限资源,相关操作结束后,养成关闭数据库的好习惯
// 先关闭Statement
if (s != null)
try {
s.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 后关闭Connection
if (c != null)
try {
c.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
明天的计划
把jdbc的增删改查自己敲一边,利用这个过程加深理解记忆,开始JDBCtemplate方面
遇到的问题
搬用网上实例代码出现各种报错,认真修改类名和修改语句块顺序后解决
收获:今天的进度很少,有些着急,师兄给我讲了急于求成的后果之后才平静下来,以后要学会摆正自己的心态及时调整
任务进度:任务一步骤17
开始时间:2017-8-8
是否有延期风险:有
之前对这个步骤难度过于乐观,会提高效率
评论