关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议)
关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议)
- 前言:最近在学习JDBC,总结了几个小问题,特地分享给大家,让大家不要犯这样的错误,也希望大家养成学会总结的好习惯,由于本人水平有限如果有什么错误还请指出,好让我进行及时的更改。
一、注意事项
以下的出现的问题是按照我的学习进度进行排列的,可能这些问题很简单但是我还是犯了很多次,所以特地总结出来。
(一) URL的时候经常少写冒号(:)
这虽然是一个小问题,但是很多人可能写的时候会不注意这一点,补充一下MySql的URL书写格式:
- 标准写法 jdbc:mysql://localhost:3306/databaseName?user=ursername&password=password
- 改成IP地址写法 jdbc:mysql://192.168.0.1:3306/databaseName?user=ursername&password=password
- 省略写法 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配置文件的问题
关于配置文件的设置如果不注意的话,可能还是会出现很多的问题,推荐一篇博客:
- 文件中经常可能用到&逻辑与的符号,然而这个符号在xml中不能直接写否则肯定会报错,要用&代替。还有其他的符号也需要进行转换。
- 关于文件名,这里的文件名一定要和根元素的名称一致,一般都是c3p0-config。
- 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的小伙伴的八条建议)的更多相关文章
- Jquery中使用setInterval和setTimeout 容易犯的低级错误
直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下: 方法1. 应用jQuery的扩展可以解决这个问题. $(document).ready(function(){ $.extend( ...
- [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Asp.net MVC 中Ajax的使用 [分享]
文章转自 http://www.huiyoumi.wang/upload/forum.php?mod=viewthread&tid=75&extra= Asp.net MVC 抛弃了A ...
- Java学习过程中的总结的小知识点(长期更新)
Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...
- struts框架学习过程中的问题
1,错误: java.lang.NullPointerException: Module 'null' not found.错误原因,struts运行需要的.jar文件拷贝不足,应该把它们加入到cla ...
- Android中使用ShareSDK实现分享
1,在http://www.mob.com官网上去创建一个后台应用(如果没有账号的同学要去先注册一下),主要后去的是你新创建的应用的appKey值 2,这里我们分享新浪微博为例,在新浪微博的sdk中创 ...
- CSDN的SDCC大会(2013)中使用的PPT分享
SDCC大会今天开完个.呵呵~ PPT下载链接在最后面,对内幕不感兴趣的可以直接无视下面的种种啰嗦直接“嗖”到最后. 这里说说这个大会中我的Topic. 此前CSDN向我约了一个主题,我回复说, 我可 ...
- JavaWeb学习之JDBC API中常用的接口和类
JDBC API中包含四个常用的接口和一个类分别是: 1.Connection接口 2.Statement接口 3.PreparedStatement接口 4.ResultSet接口 5.Driver ...
- 在maven pom.xml中加载不同的properties ,如localhost 和 dev master等jdbc.properties 中的链接不一样
[参考]:maven pom.xml加载不同properties配置[转] 首先 看看效果: 点开我们项目中的Maven projects 后,会发现右侧 我们profile有个可勾选选项.默认勾选l ...
随机推荐
- django——form组件
1.html表单概述 Django开发的是动态Web服务,而非单纯提供静态页面.动态服务的本质在于和用户进行互动,接收用户的输入,根据输入的不同,返回不同的内容给用户.返回数据是我们服务器后端做的,而 ...
- target和currentTarget
event.target返回触发事件的元素 event.currentTarget返回绑定事件的元素 1 <ul id="ul">ul 2 <li>li ...
- file_get_contents 在本地测试可以, 但在服务器上报错403
解决方法: Most likely if you don't get any content while accessing an webpage, probably it doesn't want ...
- readonly与disabled的区别
一. 范围不同 readonly 只对 <input> 和 <textarea> 标签有效 disabled 对所有表单元素都有效, 包括:<input>, < ...
- element-ui中上传文件upload
<el-upload class="upload-demo" name="targetFile" ref="upload" :with ...
- c语言二级指针内存模型
第一种: 指针数组作为输入参数 char *myArray[] = {"aaaaaa", "ccccc", "bbbbbb", " ...
- java.text.DateFormat 线程不安全问题
java.text下的 DateFormat 是线程不安全的: 建议1: 1.使用threadLocal包装DateFormat(太复杂,不推荐) 2.使用org.apache.commons.lan ...
- Codeforces 1154F - Shovels Shop - [DP]
题目链接:https://codeforces.com/contest/1154/problem/F 题解: 首先,可以确定的是: 1.$(x,y)$ 里 $x>k$ 的都不可能用: 2.肯定买 ...
- day23:类的命名空间和组合
1,类属性:静态属性,方法:动态属性:双下init方法,每当我们调用类的时候就会自动的触发这个方法,默认传self,在init方法里面可以对self赋值:在类的内部,self就是一个对象,我们自己实例 ...
- [Day25]IO(Properties、序列化流、打印流、Commons-IO)
1.Properties类-持久的属性集,可保存在流中或从流中加载,属性列表中每个键及其对应值都是一个字符串 1.1 特点 (1)Hashtable的子类,map集合中的方法都可以用 (2)该集合没有 ...