Java自学-JDBC Hello JDBC
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
步骤 2 : 初始化驱动
通过class.forname("com.mysql.jdbc.driver");
初始化驱动类com.mysql.jdbc.driver
如果忘记了第一个步骤的导包,就会抛出classnotfoundexception
class.forname是把这个类加载到jvm中,加载的时候,就会执行其中的静态初始化块,完成驱动的初始化的相关工作。
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的基础上,如果没有,点击查看如何进行数据库的创建。
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语句的,比如增加,删除
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的存在,如果没有,需要事先创建表
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中观察查询结果
答案 :
做一个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(); } } }
推荐阅读
-
JDBC简介_动力节点Java学院整理
-
java当中JDBC当中请给出一个sql server的stored procedure例子
-
Java中JDBC实现动态查询的实例详解
-
java当中JDBC当中JNDI用来查找dataSource的例子
-
Java使用Jdbc连接Oracle执行简单查询操作示例
-
java当中JDBC当中的transaction例子
-
Java开发笔记(一百四十七)通过JDBC管理数据库
-
Java jdbc批量多线程读取CVS文件入库
-
java当中JDBC当中请给出一个Oracle DataSource and SingleTon例子
-
java当中JDBC当中请给出一个sql server的dataSource的helloworld例子