欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java自学-JDBC Hello JDBC

程序员文章站 2024-01-24 12:01:10
JDBC基础 JDBC (Java DataBase Connection) 是通过JAVA访问数据库 步骤 1 : 为项目导入mysql jdbc的jar包 访问MySQL数据库需要用到第三方的类,这些第三方的类,都被压缩在一个叫做Jar的文件里。 为了代码能够使用第三方的类,需要为项目导入mys ......

jdbc基础

jdbc (java database connection) 是通过java访问数据库

步骤 1 : 为项目导入mysql-jdbc的jar包

访问mysql数据库需要用到第三方的类,这些第三方的类,都被压缩在一个叫做jar的文件里。
为了代码能够使用第三方的类,需要为项目导入mysql的专用jar包。
通常都会把项目用到的jar包统一放在项目的lib目录下,在本例就会放在
e:\project\j2se\lib 这个位置
然后在eclipse中导入这个jar包

导包步骤: 右键project->property->java build path->libaries->add external jars

Java自学-JDBC Hello JDBC
步骤 2 : 初始化驱动

通过class.forname("com.mysql.jdbc.driver");
初始化驱动类com.mysql.jdbc.driver

如果忘记了第一个步骤的导包,就会抛出classnotfoundexception

class.forname是把这个类加载到jvm中,加载的时候,就会执行其中的静态初始化块,完成驱动的初始化的相关工作。

Java自学-JDBC Hello JDBC

package jdbc;
   
public class testjdbc {
    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();
        }
           
    }
}

步骤 3 : 建立与数据库的连接

建立与数据库的connection连接
这里需要提供:
数据库所处于的ip:127.0.0.1 (本机)
数据库的端口号: 3306 (mysql专用端口号)
数据库名称 how2java
编码方式 utf-8
账号 root
密码 admin

注: 这一步要成功执行,必须建立在mysql中有数据库how2java的基础上,如果没有,点击查看如何进行数据库的创建。

Java自学-JDBC Hello JDBC

package jdbc;
  
import java.sql.connection;
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/how2java?characterencoding=utf-8",
                            "root", "admin");
  
            system.out.println("连接成功,获取连接对象: " + c);
  
        } catch (classnotfoundexception e) {
            // todo auto-generated catch block
            e.printstacktrace();
        } catch (sqlexception e) {
            // todo auto-generated catch block
            e.printstacktrace();
        }
  
    }
}

步骤 4 : 创建statement

statement是用于执行sql语句的,比如增加,删除

Java自学-JDBC Hello JDBC

package jdbc;
  
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.sqlexception;
import java.sql.statement;
  
public class testjdbc {
    public static void main(string[] args) {
  
        try {
            class.forname("com.mysql.jdbc.driver");
  
            connection c = drivermanager
                    .getconnection(
                            "jdbc:mysql://127.0.0.1:3306/how2java?characterencoding=utf-8",
                            "root", "admin");
  
            // 注意:使用的是 java.sql.statement
            // 不要不小心使用到: com.mysql.jdbc.statement;
            statement s = c.createstatement();
  
            system.out.println("获取 statement对象: " + s);
  
        } catch (classnotfoundexception e) {
            // todo auto-generated catch block
            e.printstacktrace();
        } catch (sqlexception e) {
            // todo auto-generated catch block
            e.printstacktrace();
        }
  
    }
}

步骤 5 : 执行sql语句

s.execute执行sql语句
执行成功后,用mysql-front进行查看,明确插入成功

执行sql语句之前要确保数据库how2java中有表hero的存在,如果没有,需要事先创建表

Java自学-JDBC Hello JDBC

package jdbc;
  
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.sqlexception;
import java.sql.statement;
  
public class testjdbc {
    public static void main(string[] args) {
  
        try {
            class.forname("com.mysql.jdbc.driver");
  
            connection c = drivermanager
                    .getconnection(
                            "jdbc:mysql://127.0.0.1:3306/how2java?characterencoding=utf-8",
                            "root", "admin");
  
            statement s = c.createstatement();
  
            // 准备sql语句
            // 注意: 字符串要用单引号'
            string sql = "insert into hero values(null,"+"'提莫'"+","+313.0f+","+50+")";
            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();
        }
  
    }
}

步骤 6 : 关闭连接

数据库的连接是有限资源,相关操作结束后,养成关闭数据库的好习惯
先关闭statement
后关闭connection

package jdbc;
 
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.sqlexception;
import java.sql.statement;
 
public class testjdbc {
    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/how2java?characterencoding=utf-8", "root",
                    "admin");
 
            s = c.createstatement();
 
            string sql = "insert into hero values(null," + "'提莫'" + "," + 313.0f + "," + 50 + ")";
 
            s.execute(sql);
 
        } 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();
                }
 
        }
 
    }
}

步骤 7 : 使用try-with-resource的方式自动关闭连接

如果觉得上一步的关闭连接的方式很麻烦,可以参考关闭流 的方式,使用try-with-resource的方式自动关闭连接,因为connection和statement都实现了autocloseable接口

package jdbc;
  
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.sqlexception;
import java.sql.statement;
  
public class testjdbc {
    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/how2java?characterencoding=utf-8",
                "root", "admin");
            statement s = c.createstatement();             
        )
        {
            string sql = "insert into hero values(null," + "'提莫'" + "," + 313.0f + "," + 50 + ")";
            s.execute(sql);
              
        } catch (sqlexception e) {
            // todo auto-generated catch block
            e.printstacktrace();
        }
    }
}

练习

借助循环,和上面学习到的jdbc的知识,向数据库中插入100条数据,并在mysql-front中观察查询结果
Java自学-JDBC Hello JDBC
答案 :

做一个0-100的for循环,生成不同的sql语句,然后执行

package jdbc;
   
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.sqlexception;
import java.sql.statement;
   
public class testjdbc {
    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/how2java?characterencoding=utf-8",
                "root", "admin");
            statement s = c.createstatement();             
        )
        {
             
            for (int i = 0; i < 100; i++) {
                string sql = "insert into hero values(null," + "'英雄"+i+"'"  + "," + 313.0f + "," + 50 + ")";
                s.execute(sql);
            }
             
        } catch (sqlexception e) {
            // todo auto-generated catch block
            e.printstacktrace();
        }
    }
}