关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议)


  • 前言:最近在学习JDBC,总结了几个小问题,特地分享给大家,让大家不要犯这样的错误,也希望大家养成学会总结的好习惯,由于本人水平有限如果有什么错误还请指出,好让我进行及时的更改。

一、注意事项


以下的出现的问题是按照我的学习进度进行排列的,可能这些问题很简单但是我还是犯了很多次,所以特地总结出来。

(一) URL的时候经常少写冒号(:)

    这虽然是一个小问题,但是很多人可能写的时候会不注意这一点,补充一下MySql的URL书写格式:

    1. 标准写法 jdbc:mysql://localhost:3306/databaseName?user=ursername&password=password
    2. 改成IP地址写法 jdbc:mysql://192.168.0.1:3306/databaseName?user=ursername&password=password
    3. 省略写法 jdbc:mysql:///databaseName?user=ursername&password=password

(二) Properties的load方法书写错误

    Properties对象的load方法的格式不同那么文件的相对位置的书写格式就是不一样的,这里我直接推荐一篇比较好的博文分享给大家

(三) 使用事务前必须关闭自动提交

    关闭事务自动提交的方法是conn.setAutoCommit(false),这里的conn是Connection对象,这里同样推荐一篇博文给大家

(四) 养成及时关闭资源的好习惯

    如果我们不及时关闭资源,那么MySQL中的连接进程是会一直存在的,这样对性能和效率是有很大的影响的。以下是关流的基本格式。

 //声明
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try {
...
} catch (SQLException e) {
e.printStackTrace();
} finally{
try {
//释放资源
if(conn!=null)conn.close();
if(stat!=null)stat.close();
if(rs!=null)rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

(五) 在书写entity实体的属性时推荐使用基本数据类型的包装类

    因为包装类是引用数据类型可以有null值,而实际的表格中就有很多地方出现null值,这样方便数据的接收,以及对图片等非文本资料用byte数组进行接收。比如下表就有null值。

 +---------+-----------------+-----------------+------------+------------+----------+--------------+
| vend_id | vend_name | vend_address | vend_city | vend_state | vend_zip | vend_country |
+---------+-----------------+-----------------+------------+------------+----------+--------------+
| BRE02 | hhh | 500 Park Street | Anytown | OH | 44333 | USA |
| BRS01 | Bears R Us | 123 Main Street | Bear Town | MI | 44444 | USA |
| DLL01 | Doll House Inc. | 555 High Street | Dollsville | CA | 99999 | USA |
| FNG01 | Fun and Games | 42 Galaxy Road | London | NULL | N16 6PS | England |
| FRB01 | Furball Inc. | 1000 5th Avenue | New York | NY | 11111 | USA |
| JTS01 | Jouets et ours | 1 Rue Amusement | Paris | NULL | 45678 | France |
+---------+-----------------+-----------------+------------+------------+----------+--------------+

(六) 关于c3p0-config的xml配置文件的问题

    关于配置文件的设置如果不注意的话,可能还是会出现很多的问题,推荐一篇博客

    1. 文件中经常可能用到&逻辑与的符号,然而这个符号在xml中不能直接写否则肯定会报错,要用&代替。还有其他的符号也需要进行转换。
    2. 关于文件名,这里的文件名一定要和根元素的名称一致,一般都是c3p0-config。
    3. c3po连接池的创建读取配置文件时,这里直接写入named-default节点中的name属性值。
 <c3p0-config>
<named-config name="mysql">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///databaseName</property>
<property name="user">root</property>
<property name="password">root</property>
</named-config>
</c3p0-config>

(七) 注意书写的sql语句的检查

很多时候我们会不小心写错sql语句,那么如果我们在写sql语句之前在MySQL的可视化软件上先进行测试,或者在运行之前先将sql语句打印出来,那么错误的几率就会减少。

(八) 使用BeanUtils.populate(bean,properties)方法时多个表格不要重名以及多个类变量名也不要重名

BeanUtils的populate的原理是通过传入的参数的map中的String类型的key和对象的变量名进行比较,如果相同就为其赋值。那么如果重名的话就会出现赋值错误,肯定会将第一次扫描到表的同列名数据直接赋值就会造成对象的赋值错误。

二、总结分析


  以上的问题出现的原因多半是跟自己的不良习惯有关,那么以下我们进行一下总结。

(一) SQL的基础知识要牢固

    在JDBC中将会多次要求书写sql语句,如果SQL的基础知识很不扎实,那么将会很头疼,因为写错sql语句就会报错。所以在学习JDBC之前请将SQL的常用基本方法用熟练。

(二) 平时就需要养成严谨的编码习惯

    个人理解严谨的编码习惯是书写代码的时候要多写注释,然后写的时候每写完一行大概检查一下,虽然这样的效率很低,但是对于降低bug出现几率很有效。

(三) 平时多总结自己的错误

    起始很多的错误都是相通的,平时多注意总结自己的代码错误,那么这种类型的错误可能就不会经常出现了。

关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议)的更多相关文章

  1. Jquery中使用setInterval和setTimeout 容易犯的低级错误

    直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下: 方法1. 应用jQuery的扩展可以解决这个问题. $(document).ready(function(){ $.extend( ...

  2. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. Asp.net MVC 中Ajax的使用 [分享]

    文章转自 http://www.huiyoumi.wang/upload/forum.php?mod=viewthread&tid=75&extra= Asp.net MVC 抛弃了A ...

  4. Java学习过程中的总结的小知识点(长期更新)

    Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...

  5. struts框架学习过程中的问题

    1,错误: java.lang.NullPointerException: Module 'null' not found.错误原因,struts运行需要的.jar文件拷贝不足,应该把它们加入到cla ...

  6. Android中使用ShareSDK实现分享

    1,在http://www.mob.com官网上去创建一个后台应用(如果没有账号的同学要去先注册一下),主要后去的是你新创建的应用的appKey值 2,这里我们分享新浪微博为例,在新浪微博的sdk中创 ...

  7. CSDN的SDCC大会(2013)中使用的PPT分享

    SDCC大会今天开完个.呵呵~ PPT下载链接在最后面,对内幕不感兴趣的可以直接无视下面的种种啰嗦直接“嗖”到最后. 这里说说这个大会中我的Topic. 此前CSDN向我约了一个主题,我回复说, 我可 ...

  8. JavaWeb学习之JDBC API中常用的接口和类

    JDBC API中包含四个常用的接口和一个类分别是: 1.Connection接口 2.Statement接口 3.PreparedStatement接口 4.ResultSet接口 5.Driver ...

  9. 在maven pom.xml中加载不同的properties ,如localhost 和 dev master等jdbc.properties 中的链接不一样

    [参考]:maven pom.xml加载不同properties配置[转] 首先 看看效果: 点开我们项目中的Maven projects 后,会发现右侧 我们profile有个可勾选选项.默认勾选l ...

随机推荐

  1. eclipse 中 导入git项目无法导入的问题

    研发在git上打了一个分支,需要重新导入分支项目.此时发现与之前相同模式导入失败,不起作用. 解决: 需要在Git Repositories中对应项目下找到.project 文件并进行修改,修改项目名 ...

  2. XVII Open Cup named after E.V. Pankratiev. Eastern GP, Division 1

    A. Count The Ones $ans=b-c+1$. #include <stdio.h> using namespace std ; int a , b , c ; void s ...

  3. MySQL中count函数使用方法详解

      count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在MySQL中count函数用法与性能比较吧. count(*) 它返回检索行的数目, 不论其是否包含 NULL值. SELECT ...

  4. 数据结构-堆 Java实现

    数据结构-堆 Java实现. 实现堆自动增长 /** * 数据结构-堆. 自动增长 * */ public class Heap<T extends Comparable> { priva ...

  5. html中的列表

    无序列表(什么前面默认一个实心的黑原点) <ul> <li>什么</li> <li>什么</li> <li>什么</li& ...

  6. dhtmlx Gantt知识点1

    鼠标放在任务上显示信息框: <script src="../../codebase/ext/dhtmlxgantt_tooltip.js?v=5.2.0"></s ...

  7. PDF的水印怎么去掉

    很多朋友私下都有问过PDF去除水印的方法,现在在网上下载一些PDF电子书,几乎页面内都会有水印的,而且有的水印还带有超链接,稍微不注意就会点开进入别的页面内,不仅影响了阅读效果还带给读者负面影响,那如 ...

  8. IIC稳定性.VBS

    Sub Main Dim cnt Dim delay Dim time Dim atttime atttime = 20 delay = 3000 time = 50 crt.screen.Send ...

  9. [dev] 中文版内核代码编码规范

    我是我最喜欢的编码规范.并始终坚持. https://www.kernel.org/doc/html/v4.15/translations/zh_CN/coding-style.html

  10. VC Edit控件单行垂直居中和定制外框的实现

    Edit控件很奇怪,不在WM_PAINT里面画图,且外框也不在WM_NCPAINT里面画,客户区就是整个窗口,非客户区没有.也没有垂直居中风格可以设置.在界面排版的时候,看起来怪怪的. 下面提供Edi ...