关于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 ...
随机推荐
- PHP服务器时差8小时的解决办法
PHP服务器时差8小时的解决办法 <?php date_default_timezone_set('Asia/Shanghai'); echo date("Y-m-d")? ...
- css 定位布局
文档流: 文档流,是指盒子按照html标签编写的顺序依次从上到下,从左到右排列.块元素占一行,行内元素在一行之内从左到在排列,先写的先排列,后写的排在后面,每个盒子都占据自己的位置. 关于定位: 可以 ...
- 移除K位数字
1.题目来源:选自LeetCode 402: 2.问题描述: 3.问题分析 通过分析我们可以得出这样的结论:如果后一个数字比前面的数字小的话,那么我们就要把前面的一个数字删除掉,并且每次把字符串中拆出 ...
- Android Studio帮助文档的安装及智能提示设置
初次使用Android Studio,发现其智能提示不能像Visual Studio一样显示系统方法等的详细用途描述.经查找资料,问题原因是未安装SDK Document. 解决办法如下: 1.打开如 ...
- windows上react-native run-android时Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED报错
报错如图 解决 在C:\Users\{用户名}\.gradle\wrapper\dists路径下,删除所有文件夹,重新run-android ps:网上搜了说是说是java解压缩编码格式问题什么的,感 ...
- linux学习:wget与lynx用法整理
指令:wget.lynx.axel wget url #下载数据写入文件,下载的文件名与url中的文件名保持一致,下载信息或进度写入stdoutwget url1 url2 url3 #下载多 ...
- viewport的故事(一)
部分翻译 自原文 https://www.quirksmode.org/mobile/viewports.html 概念:设备像素和CSS像素 设备像素可以通过 screen.width/he ...
- 微信小程序弹出操作菜单
微信小程序弹出操作菜单 比如在页面上放一个按钮,点击按钮弹出操作菜单,那么在按钮的 bindtap 事件里,执行下面的代码即可: wx.showActionSheet({ itemList: ['A' ...
- DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- 干货|爱奇艺CDN巡检系统技术解析
小结: 1. 中心处理系统 /1/将定制后的巡检任务拆分,通过配置与任务分发系统.CMDB*( configuration management database)将派发到边缘拨测系统/2/处理边缘拨 ...