知识分享——Idea平台JDBC用法实践详解

众所周知,英文的简写即揭示了其基本涵义。JDBC——全称是Java Database Connectivity,一目了然,我们可理解为建立Java与数据库连接的一种手段,起到类似USB接口的作用。为了让大家能够运用,笔者会把其分解成六部分加以阐述。

1. 加载驱动

Class.forName("com.mysql.jdbc.Driver");

具体驱动位置是在mysql-connector-java-5.1.0-bin.jar(笔者版本)中com.mysql.jdbc目录下的Driver类。首先我们得理解为何如此做,笔者在此给读者提供些便利。

2. 连接字符串

String url="jdbc:mysql://localhost:3306/news?characterEncoding=UTF-8";
String user="root";
String password="root";

Connection conn=DriverManager.getConnection(url,user,password);

        这一步是为了实现与数据库的关联,以待进一步操作。具体实现是调用DM的GC方法创建Connection对象,其中url(统一资源定位符)与user、password(数据库管理员账号与密码)是参数。

        值得一提的是,url的“?”后的一段是为了防止中文数据出现乱码,这是最常见且有效的方式,但其实还能再加些代码以确保无失,但略显赘余就不过多介绍了。不过大家若出现乱码不能独自解决,欢迎在评论区分享交流。

        分享一个idea的小功能,也是为了更直观地呈现连接的过程。

 这里有很多种数据库,笔者使用的是mysql,这里推荐大家使用,毕竟有着免费开源受众面广的优点。当然也可以根据个人需要选择,idea这方面很棒。

         大家可以看到各参数设置的情况,url里“//”后面分别是本地服务器、端口号、数据库名称。若测试报错,请留言讨论。常见错误是时区不对,改UTC为GMT即可。

 这样做后能很方便地可以查看数据库表的情况。

3. 根据需求编写SQL语句

sql语句有增删改查这四种类型,诸位可以再熟悉一下。这些语句都是任务要求或自我训练经常需要的“公式”,得温故而知新(笔者亲试)。

增:插入一个或多个(行)数据
INSERT INTO 表名(字段1,字段2……) VALUE(值1,值2……);
INSERT INTO 表名(字段1,字段2……) VALUES(值1,值2……),(值1,值2)……;

删:删除某个(行)数据
DELETE FROM 表名 WHERE 条件1 (AND 条件2);

改:更新某条数据
UPDATE 表名 SET=新值 WHERE 某字段=某值;

查:查询表中数据
SELECT 字段1,字段2…… FROM 表名 WHERE 条件1 (AND 条件2);

4. 创建PreparedStatement对象

java.sql包中的PreparedStatement 接口继承了Statement,并与之在两方面有所不同:有人主张,在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement。                ——转自百度百科

        相比被继承的Stadement对象,它可以将SQL语句进行预编译,在项目开发上批量处理效率更高,还能有效防止SQL注入的问题。

          //查询
          String sqlQuery="select * from comments where cnid=?";
          PreparedStatement pstmtQuery=conn.prepareStatement(sqlQuery);
          pstmtQuery.setObject(1,"占位符赋值");
          //删除
          String sqlDelete="DELETE from news where nid=?";
          PreparedStatement pstmtDelete=conn.prepareStatement(sqlDelete);
          pstmtDelete.setString(1,"占位符赋值");

        预编译是指可以用占位符"?"代替条件中具体的值,在后面再进行赋值。大家可以看到查询和删除的PreparedStatement对象的创建,除了SQL外没有差异。其实增删改查语句的传送过程可以封装成方法,笔者将在下一篇《DAO详解》中会具体展示。

5. 执行SQL

  •  查询:       
//调用方法返回结果集
ResultSet rs=pstmtQuery.executeQuery();
    if(rs.next()){//类似一张表,初识值0表示停留在字段上没值,调用next()循环向下转行,
//直到空行结束。
           rs.getString(1);//找到查询得的表从左至右的字段编号,在对应行取值。
           rs.getString("");//查找具体字段名,在对应行取值。
       }

        得到Resultset对象后就可以调用相关方法取出其中具体的值。

  • 增删改:
//返回更新的行数
int result=pstmtDelete.executeUpdate();

        上面举例是使用删除语句的,不过增改都是一个用法。只要这条语句执行后得到非零整数,即表示执行成功,数据库表发生改变

6. 关闭连接

rs.close();//结果集关闭
pstmtQuery.close();//传送对象关闭
conn.close();//数据库连接关闭

        这是最后一步,大家千万不要缺少它。即使这样不会报错,但随手关闭是个良好的编码习惯。如果没关,会造成资源的浪费。

        注意先开后关的原则。

        好了,本文到此为止,感谢诸位的点击浏览,你们的支持,是我的最大动力。

        若本文有错误或不足,欢迎来此指导斧正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值