发表于: 2018-05-20 21:35:09
1 1222
今天完成的事情:
首先重新敲了一遍链接数据库的代码。然后设置了一个关闭数据库链接,和插入100条数据的代码。
import java.sql.*;
public class Dao {
public static String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
public static String user = "root";
public static String passWorld = "4351";
public static void main(String[] args){
Connection c = null;
PreparedStatement ps = null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
c = DriverManager.getConnection(url,user,passWorld);
System.out.println("连接成功,获取连接对象 " + c);
Statement s = c.createStatement();
System.out.println("获取Statement对象 " + s);
String sql = "insert into biao values(null,?,?,?,?,?,?,?,?,?,?,?,?)";
ps = c.prepareStatement(sql);
{
for (int i = 0;i<100;i++){
ps.setString(1,"张三"+i);
ps.setString(2,"897845464");
ps.setString(3,"java");
ps.setInt(4,20170519);
ps.setString(5,"张三");
ps.setString(6,"897845464");
ps.setString(7,"java");
ps.setString(8,"张三");
ps.setString(9,"897845464");
ps.setString(10,"java");
ps.setString(11,"897845464");
ps.setString(12,"20180620");
ps.execute();
}
}
}catch (ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException e){
e.printStackTrace();
}finally {
if (ps != null)
try{
ps.close();
}catch (SQLException e){
e.printStackTrace();
}
if (c != null)try{
c.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
然后改用try with resource改写了一下
- -一开始我try后面用的{}总是报错,后来改成()就好了,百度查了下,没找到具体解释,但是好像是只有在()的才会自动关闭?
import java.sql.*;
public class Dao {
public static String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
public static String user = "root";
public static String passWorld = "4351";
public static void main(String[] args){
try{
Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动
}catch (ClassNotFoundException e){
e.printStackTrace();
}
String sql = "insert into biao values(null,?,?,?,?,?,?,?,?,?,?,?,?)";
try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
PreparedStatement ps = c.prepareStatement(sql);
)
{
System.out.println("连接成功,获取连接对象 " + c);
for (int i = 0;i<100;i++){
ps.setString(1,"张三"+i);
ps.setString(2,"897845464");
ps.setString(3,"java");
ps.setInt(4,20170519);
ps.setString(5,"张三");
ps.setString(6,"897845464");
ps.setString(7,"java");
ps.setString(8,"张三");
ps.setString(9,"897845464");
ps.setString(10,"java");
ps.setString(11,"897845464");
ps.setString(12,"20180620");
ps.execute();
}
}catch (SQLException e){
e.printStackTrace();
}
}
}
实现数据库delete语句删除
import java.sql.*;
public class Dao {
public static String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
public static String user = "root";
public static String passWorld = "4351";
public static void main(String[] args){
try{
Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动
}catch (ClassNotFoundException e){
e.printStackTrace();
}
String sql = "delete from biao where ID = ?";
try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
PreparedStatement ps = c.prepareStatement(sql);
)
{
System.out.println("连接成功,获取连接对象 " + c);
ps.setString(1,"15");
ps.execute();
}catch (SQLException e){
e.printStackTrace();
}
}
}
实现update语句进行数据更改
import java.sql.*;
public class Dao {
public static String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
public static String user = "root";
public static String passWorld = "4351";
public static void main(String[] args){
try{
Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动
}catch (ClassNotFoundException e){
e.printStackTrace();
}
String sql = "update biao set name = ? where ID = ?";
try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
PreparedStatement ps = c.prepareStatement(sql);
)
{
System.out.println("连接成功,获取连接对象 " + c);
ps.setString(1,"龙傲天");
ps.setString(2,"1");
ps.execute();
}catch (SQLException e){
e.printStackTrace();
}
}
}
使用select * from where 语句
import java.sql.*;
import java.sql.ResultSet;
public class Dao {
public static String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
public static String user = "root";
public static String passWorld = "4351";
public static void main(String[] args){
try{
Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动
}catch (ClassNotFoundException e){
e.printStackTrace();
}
String sql = "select * from biao where ID = ?";
try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
PreparedStatement ps = c.prepareStatement(sql);
)
{
System.out.println("连接成功,获取连接对象 " + c);
ps.setString(1,"20");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
String qq = rs.getString(3);
String type = rs.getString(4);
String start = rs.getString(5);
String university = rs.getString(6);
String studyid = rs.getString(7);
String link = rs.getString(8);
String hope = rs.getString(9);
String senior = rs.getString(10);
String know = rs.getString(11);
String creat = rs.getString(12);
String update = rs.getString(13);
System.out.println(id+ " " + name+ " " + qq+ " " + type + " " +start + " " +university + " " + studyid +" " + link +" " +hope +" " +senior +" " +know+ " " +creat + " " +update);
}
}catch (SQLException e){
e.printStackTrace();
}
}
}
运行结果:
excuteQuery,针对查询数据使用
excuteUpdate,针对数据更新,增删改,使用
excute,两者都可执行,在查询数据返回ture,增删改返回false。
表格结构
dao层
public interface Dao{
public void insert(String name,int age);
public void delete(int id,String name);
public void select(int id);
public void update(int id,String name,int age);
}
实例层
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
public class Jdbc implements Dao {
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
String user = "root";
String pw = "4351";
//加载驱动
//连接数据库
public Connection getConection() throws SQLException,ClassNotFoundException{
Class.forName(driver);
return DriverManager.getConnection(url,user,pw);
}
@Override
public void insert(String name, int age) {
String sql = "insert into record values(null,?,?)";
try{
Connection c = getConection();
PreparedStatement ps = c.prepareStatement(sql);
ps.setString(1,name);
ps.setInt(2,age);
ps.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
@Override
public void delete(int id, String name) {
String sql = "delete from record where id = ? or name = ?";
try(
Connection c = getConection();
PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1, id);
ps.setString(2, name);
ps.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
@Override
public void select(int id) {
String sql = "select * from record where id = ?";
try(
Connection c = getConection();
PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1,id);
ps.executeQuery();
ResultSet rs = ps.executeQuery();
while (rs.next()){
int id1 =rs.getInt(id);
String name1 = rs.getString(2);
int age1 = rs.getInt(3);
System.out.println(id1+name1+age1);
}
}catch (SQLException e){
e.printStackTrace();
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
@Override
public void update(int id,String name,int age) {
String sql = "update record set id = ?,name = ?,age = ? where id = ?";
try(
Connection c = getConection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setInt(1, id);
ps.setString(2,name);
ps.setInt(3,age);
ps.setInt(4,id);
ps.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
public static void main(String[] args){
Jdbc record = new Jdbc();
record.insert("李四",17);
record.select(1);
record.update(1,"王五",23);
}
}
运行结果。
明天计划的事情:
看看mybatis。
看看java基础书
放松一下脑袋- -有点进入负载模式了
遇到的问题:
finally这里有点不太懂- -
为什么写成
finally {
if (ps != null)
ps.close();
if (c != null)try
c.close();
}
这样不行呢。会报错。
必须要改成才可以- -
finally {
if (ps != null)
try{
ps.close();
}catch (SQLException e){
e.printStackTrace();
}
if (c != null)try{
c.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
在查询语句的时候,这么写就会报错。
try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
PreparedStatement ps = c.prepareStatement(sql);
ps.setString(1,"20");
ResultSet rs = ps.executeQuery();
)
{
这样就可以了。。- -我理解的是try()里面不能有具体的赋值对象和语句?只能存在对象的调用?因为在执行完()后内语句就自动关闭了?
try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
PreparedStatement ps = c.prepareStatement(sql);
)
{
System.out.println("连接成功,获取连接对象 " + c);
ps.setString(1,"20");ResultSet rs = ps.executeQuery();
}
- -用jbdc向数据库添加数据时,如果表是新的表,没有数据,且有设置不为null的。。
执行命令,就没办法存进去数据。。
收获:一步一步在成长ing
评论