关于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 ...
随机推荐
- (转)谈谈用ASP.NET开发的大型网站有哪些架构方式(成本)
在上篇文章里(http://www.cnblogs.com/ms0017/archive/2011/07/26/2117676.html),列举了国内外用ASP.NET开发的大型网站有哪些.最后提到了 ...
- popwindow+动画
布局: main: <Button android:id="@+id/btn" android:layout_width="match_parent" a ...
- Viterbi algorithm
HMM(隐马尔可夫模型)是用来描述隐含未知参数的统计模型,是一个关于时序的概率模型,它描述了一个由隐藏的马尔可夫链生成状态序列,再由状态序列生成观测序列的过程.其中,状态之间的转换以及观测序列和状态序 ...
- sqlserver 表循环-游标、表变量、临时表
SQL Server遍历表的几种方法 阅读目录 使用游标 使用表变量 使用临时表 在数据库开发过程中,我们经常会碰到要遍历数据表的情形,一提到遍历表,我们第一印象可能就想到使用游标,使用游标虽然直观易 ...
- flask基础二
内容有:1.配置文件处理,2.路由系统,3.视图,4.请求,5.响应,6.模板渲染,7.session,8.flash,9.中间件,10特殊装饰器 一:一个简单知识点 通过路径构成的字符串1.动态导入 ...
- CSCI 1100 — Computer Science 1 Homework
CSCI 1100 — Computer Science 1 Homework 8CS1 Multiverse: ClassesOverviewThis homework is worth 100 p ...
- JsonPath如何获取JSON数据中的值
场景: 发送接口请求后,得到请求结果值是Json数据, 需要从Json数据信息中提取字段值. 响应值字符与字符之间有空格,导致用正则表达式方法提取比较麻烦,于是用java的JsonPath方法提取快速 ...
- gdb调试原理及qemu中的gdbserver
(一)gdb调试原理 此部分转自:https://blog.csdn.net/u012658346/article/details/51159971 https://www.cnblogs.c ...
- npm run dev没反应
npm config set registry https://registry.npm.taobao.org npm install npm run dev
- 使用Gadget 做usb鼠标键盘设备
使用Gadget 做usb鼠标键盘设备 感谢TI社区提供的好帮助啊!http://e2e.ti.com/support/arm/sitara_arm/f/791/p/571771/2103409?pi ...