Java数据库编程--------简单实例讲解------细节分析 任务要求: 1、通过JAVA链接数据库,并创建user表,表结构如下: 2、向表中插入3条记录姓名分别为:小歪,萌妹子,女汉字,其他字段数据自行添加 3、删除女汉子记录 4、查询表中所有记录,并打印出来 根据题目要求,解决此题并不难,但注意到其中有几个细节概念问题,于是想写篇帖子做个笔记。
在实际开发中一般比较常见的数据库有Oracle、DB2、MySQL等,这些数据库在使用时都是支持标准SQL语法操作的,所以各个数据库只要了解其基本命令就可以很快地上手开发。 由于我电脑没装数据库,为方便暂时装了个MySQL试着做了下,以下是代码部分: - import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.Statement;
- public class ConnectionDemo02 {
- //定义数库驱动路径
- public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
- //定义数据库链接地址(MySQL)
- public static final String DBRUL="jdbc:mysql://localhost:3306/shxy";
- //数据库链接用户名
- public static final String DBUSER="root";
- //数据库链接密码
- public static final String DBPASS="123";
-
- public static void main(String args[])throws Exception //暂时抛出所有异常
- {
- //sql0: 如果数据库中已有user表,则删除(sql命令)
- String sql0="drop table if exists user ;";
- //sql1: 创建user表(sql命令)
- String sql1="create table user(id int AUTO_INCREMENT PRIMARY KEY, name varchar(30) NOT NULL, password varchar(32) NOT NULL, "
- +"age int NOT NULL, sex varchar(2) DEFAULT'男', birthday date);";
- //sql2\sql3\sql4: 插入数据(sql命令)
- String sql2="INSERT INTO user(id,name,password,age,sex,birthday)VALUES(1,'小歪','www.ljb.com',21,'男','1993-06-20');";
- String sql3="INSERT INTO user(id,name,password,age,sex,birthday)VALUES(2,'萌妹子','www.mengmengi.com',20,'女','1993-02-22');";
- String sql4="INSERT INTO user(id,name,password,age,sex,birthday)VALUES(3,'女汉子','www.nvhanzi.com',25,'女','1993-08-08');";
- //sqldel: 删除姓名为女汉字记录(sql命令)
- String sqldel="delete from user where name='女汉子'";
- //sqlset: 查询表中所有数据(sql命令)
- String sqlsel="select * from user";
-
- //定义数据库连接对象和数据操作对象
- Connection conn=null;
- Statement stem=null;
-
- Class.forName(DBDRIVER); //加载驱动
- conn=DriverManager.getConnection(DBRUL,DBUSER,DBPASS); //链接数据库
- System.out.println(conn); //测试是否链接到数据库,输出数据库连接对象
-
- stem=conn.createStatement(); //实例化数据操作对象
- //诺user表存在,则删除
- stem.execute(sql0);
- //创建user表
- stem.execute(sql1);
- //插入数据
- stem.execute(sql2);
- stem.execute(sql3);
- stem.execute(sql4);
- //删除指定数据
- stem.execute(sqldel);
-
- //以下为查询数据库记录
- ResultSet rs=null;
- rs=stem.executeQuery(sqlsel); //实例化ResultSet对象
- //打印数据库中所有记录
- while(rs.next()){
- System.out.println("ID:"+rs.getInt("id")+"\t姓名:"+rs.getString("name")+"\t密码:"+rs.getString("password")
- +"\t年龄:"+rs.getInt("age")+"\t性别:"+rs.getString("sex")+"\t生日:"+rs.getDate("birthday"));
- System.out.println("-----------------------------------------------------------------------------------------");
- }
- rs.close(); //关闭结果集
- stem.close(); //关闭数据操作
- conn.close(); //关闭数据库
- }
- }
复制代码
运行结果:
以下是数据库中内容:
可以发现与 Eclipse 结果是一样的,成功对数据库中的数据进行了操作。
以下依照本程序做个小小的总结以及细节分析: 1、数据库链接地址的形式 JDBC虽然提供了与平台无关的数据库操作,但是各个数据库的链接地址是有差异的,JDBC的链接地址实际上由以下3个部分组成。 * JDBC协议:JDBC URL 中的jdbc; * 子协议:驱动程序名或数据库链接机制(这种机制可由一个或多个驱动程序支持)的名称,如:mysql; * 子名称:一种标识数据库的方法。必须遵循“//主机名:端口/子协议”的标准URL命令约定,如://localhost:3306/shxy 。 2、以上代码为什么写了三个关闭操作,只写一个 数据库链接.close()不行吗? 可以只写一个关闭连接。 在数据库操作中都存在关闭方法,连接关闭、操作关闭、一般来说只要链接关闭,则其他的所有操作都会关闭。但是在开发中JDBC代码中一般习惯分别按照顺序关闭,即先打开的后关闭,所以以上代码依照先后顺序写了三个关闭:rs.close(); //关闭结果集 stem.close(); //关闭数据操作
conn.close(); //关闭数据库
3、以上代码虽然实现了基本功能,但是在JDBC的查询操作中,因为是将数据库表中的全部查询结果保存在了ResultSet对象(rs)中,实际上也就是保存在了内存中,所以如果查询结果数据量过大,则系统将会出现问题。这一点在系统开发中尤为重要。
4、额外补充:在开发中到底使用哪种数据库?MySQL? Oracle?
针对需要选择数据库。
在实际开发中,数据库的选择有时是由需求方直接选定的,有时是由开发者自行选定的。但因为MySQL是免费的,所以对于一些小型数据量操作而言使用MySQL就足够了;如果数据量过大,而且需求方又提供了购买Oracle数据库费用,则可以使用Oracle。
对于个人学习而言,MySQL就足够了。
5、感兴趣的 MySQL 以及 驱动包已共享
百度云盘:http://pan.baidu.com/s/1mgwRHBM
|