0 0

我写的代码指点一二3

其中的一个方法,看看有什么问题,指点一下,谢谢程序能不能这么写 会不会有问题

	public Integer doInsert(final ManageObject obj){
		con = ConDWDVLP.getDWDVLP();
		logger.debug("Create InsertConnection:"+con);
		boolean flag = false;
		String sql = "select distinct * from DIM_MG_OBJECT where Detail_Code = '"+obj.getDETAIL_CODE()+"'";
		try {
			PreparedStatement stmt = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
			rs = stmt.executeQuery();
			logger.debug("SQL:"+sql);
			flag = rs.last();
			logger.debug("flag is "+flag);
		} catch (SQLException e) {
			try {
				if(con!=null)con.close();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			logger.debug("Insert data is error! ",e);
		}
		if(!flag){
			return (Integer)JDBCTransactionTemplate.doTransaction(new Transaction(){
				
				public Object execuse(Connection Iner_con) throws SQLException {
					logger.debug("Get Iner_con:"+Iner_con);
					int bol = 0;
					String sql1 = "insert into "
						+ "DIM_MG_OBJECT(FMLY_CODE,FMLY_NAME,MID_CODE,MID_NAME,DETAIL_CODE,DETAIL_NAME,LEGACY_ITEM,SHOP_SIGN,PRODUCT_CODE,PRODUCT_NAME,PRODUCT_CAT,CREATE_MAN,MODIFY_MAN,REMARK,ALIVE_FLAG,CREATE_DATE,MODIFY_DATE,META_STR_ID,META_STRUCTURE) "
						+ "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,sysdate,sysdate,?,?)";
				PreparedStatement stmt = Iner_con.prepareStatement(sql1);
				stmt.setString(1, obj.getFMLY_CODE());
				stmt.setString(2, obj.getFMLY_NAME());
				stmt.setString(3, obj.getMID_CODE());
				stmt.setString(4, obj.getMID_NAME());
				stmt.setString(5, obj.getDETAIL_CODE());
				stmt.setString(6, obj.getDETAIL_NAME());
				stmt.setString(7, obj.getLEGACY_ITEM());
				stmt.setString(8, obj.getSHOP_SIGN());
				stmt.setString(9, obj.getPRODUCT_CODE());
				stmt.setString(10, obj.getPRODUCT_NAME());
				stmt.setString(11, obj.getPRODUCT_CAT());
				stmt.setString(12, obj.getCREATE_MAN());
				stmt.setString(13, obj.getMODIFY_MAN());
				stmt.setString(14, obj.getREMARK());
				stmt.setString(15, "Y");
				stmt.setString(16, obj.getMETA_STR_ID());
				stmt.setString(17, obj.getMETA_STRUCTURE());
				bol = stmt.executeUpdate();
				logger.info("ManageDAO--insert DIM_MG_OBJECT Table:"+bol+"row");
				if(obj.getFMLY_CODE().equals("SRM")){
					String sql2 ="insert into dim_coef_price(FMLY_CODE,FMLY_NAME,MID_CODE,MID_NAME,DETAIL_CODE,DETAIL_NAME,META_STR_ID,META_STRUCTURE,ALIVE_FLAG,CREATE_MAN,CREATE_DATE,MODIFY_MAN,MODIFY_DATE)"
											+ " values(?,?,?,?,?,?,?,?,?,?,sysdate,?,sysdate)";
					stmt = Iner_con.prepareStatement(sql2);
					stmt.setString(1,obj.getFMLY_CODE());
					stmt.setString(2, obj.getFMLY_NAME());
					stmt.setString(3, obj.getMID_CODE());
					stmt.setString(4, obj.getMID_NAME());
					stmt.setString(5, obj.getDETAIL_CODE());
					stmt.setString(6, obj.getDETAIL_NAME());
					stmt.setString(7, obj.getMETA_STR_ID());
					stmt.setString(8, obj.getMETA_STRUCTURE());
					stmt.setString(9, "Y");
					stmt.setString(10, obj.getCREATE_MAN());
					stmt.setString(11, obj.getMODIFY_MAN());
					bol = stmt.executeUpdate();
					logger.info("ManageDAO--insert dim_coef_price table:"+bol+"row");
					if(!(bol>0)){
						throw new SQLException();
					}
					else{
					String sql3 ="insert into DIM_CONVERT_FORMULA(FMLY_CODE,FMLY_NAME,MID_CODE,MID_NAME,DETAIL_CODE,DETAIL_NAME,META_STR_ID,META_STRUCTURE," +
								"ALIVE_FLAG,CREATE_MAN,CREATE_DATE,MODIFY_MAN,MODIFY_DATE) " +
								"values(?,?,?,?,?,?,?,?,?,?,sysdate,?,sysdate)";
					stmt = Iner_con.prepareStatement(sql3);
					stmt.setString(1, obj.getFMLY_CODE());
					stmt.setString(2, obj.getFMLY_NAME());
					stmt.setString(3, obj.getMID_CODE());
					stmt.setString(4, obj.getMID_NAME());
					stmt.setString(5, obj.getDETAIL_CODE());
					stmt.setString(6, obj.getDETAIL_NAME());
					stmt.setString(7, obj.getMETA_STR_ID());
					stmt.setString(8, obj.getMETA_STRUCTURE());
					stmt.setString(9, "Y");
					stmt.setString(10, obj.getCREATE_MAN());
					stmt.setString(11, obj.getMODIFY_MAN());
					bol = stmt.executeUpdate();
					logger.info("ManageDAO--insert DIM_CONVERT_FORMULA table:"+bol+"row");
						if(!(bol>0)){
							throw new SQLException();
						}
					}
				}
				if(stmt!=null)stmt.close();
				return new Integer(bol);
				}
			});
		}else {
			try {
				if(con!=null)con.close();
				logger.debug("Close Connection:"+con+"is Succeed!");
			} catch (SQLException e) {
				logger.debug("Close Connection:"+con+"is Defeat!",e);
			}
			return new Integer(2);
		}
	}
2008年11月03日 15:23

4个答案 按时间排序 按投票排序

0 0

采纳的答案

你好,代码可能有如下问题:
1.你的方法实在太长了,可读性十分的差.
2.查询数据库是每次连接和statment需要关闭.
3.增加适当的注释,便于别人理解,如果出现问题,自己调试也比较方便.
4.网上有spring的jdbcTemplete,或者使用ibatis等成熟的框架.这样你的代码才有保证.有那么多现成的,我们为什么不用呢.

2008年11月07日 21:03
0 0

rs也close来吧,如果重用rs或者PreparedStatement ,之前也要先close

2008年11月05日 15:15
0 0

1.没有注释不是一个好习惯
2.你给SQL语句绑定参数时,用的是按参数位置绑定的如果换成按参数名绑定形式,可提高代码的维护性能
3.String sql = "select distinct * from DIM_MG_OBJECT where Detail_Code = '"+obj.getDETAIL_CODE()+"'";
这个查询有安全问题

2008年11月05日 10:28
0 0

问起来有点   bad smell..

              看起来不舒服..复制粘贴的代码太多.

2008年11月05日 00:52

相关推荐

    如何写出让自己满意的代码

    前辈,我想让代码写得更好一点,能不能谈谈你的经验,给我指点一下!”  我在回复里刚写了几句,意识到140个字很难把我的想法说清楚,本着知无不言言无不尽的好为人师精神,我决定把我的回答写成一篇博文。  ...

    Jquery写一个鼠标拖动效果实现原理与代码

    近日项目中要做一个鼠标拖拽层的效果,于是手动使用Jquery做了一个,发出来跟大伙儿分享一下,并希望能得到高手的指点,如果哪位大侠觉得我的思路和代码不正确或者需要改进的话,希望能指点一二,在下感激不尽。 我...

    电脑蓝屏代码大全

    还请高手指点站长一二)** - 未知错误,可能与中断处理有关。 37. **0X000006B 因为代用的磁盘尚未插入,所以程序已经停止** - 需要的可移动磁盘未插入。 38. **0X000006C 磁盘正在使用中或被锁定** - 磁盘正被...

    PHP实现依赖注入-使用反射机制和动态代理技术

    写了这么一段代码。这段代码我测试过还比较好用吧。 不过我认为还是用很多不合理的地方,和一些bug存在。 这个我会在以后慢慢修改。也请大家给与指点。 笔者:咋个办呢 QQ:285207813 date:2009-12-19

    米斗系统VC源代码(20090530).rar

    完成“米斗系统”的一级功能界面设计,二级功能界面因为想在FormView窗口中嵌入PropertySheet而不会实现,希望有高手指点。 目前我们这里有几个人一起搞业余开源程序,第一个程序就是“米斗系统”(并建了QQ群:...

    ReCsvToPcd.rar

    csv转pcd文件源代码!包括了原始数据,需自己根据电脑文件位置对代码进行相应的调整!这几天以直在入手学习PCL,但是因为激光雷达的原始点云时....本人结合python写了一个小小的脚本,不足之处还希望大神能够指点一二。

    PHP 读取网站HTML代码 生成PNG图片的类

    不是老鸟,代码不规范,不简练的地方还平高手大大们在评论里多指点小弟一二.. 类的功能很简单 根据给的目录地址 得到所有的文件夹下的一个HTML文件. 之后调用html2png访问这个网站的URL路径. 之后生成PDF后转成PNG...

    软件框架-@Profile@Configuration设置环境配置类控制类实现将要激活的环境从8080端口激活并在控制台输出

    1.该程序代码是使用idea2021.12版本编写...6.这个代码是我在上学时跟老师所讲所学的,部分地方存在缺陷及不足,请见谅同时也请赐教指点; 原文链接:https://blog.csdn.net/weixin_59042297/article/details/129771348

    cpp代码-输入流 请高手指点一下

    二、基本输入操作 1. 基本类型输入:对于整型、浮点型等基本类型,可以使用`>>`运算符直接从`cin`读取。例如: ```cpp int number; std::cin >> number; // 从键盘读取一个整数 ``` 2. 字符串输入:对于字符串,...

    C++实现朴素贝叶斯分类器

    程序写的比较简单,希望高手能指点!这个是个VS工程。 忘说了,如果自己做测试数据集的话,最后类别的位置一定要加个‘?’这是格式要求!O(∩_∩)O~还忘了一件事情就是那个拉普拉斯校准避免计算零概率值的没有编写...

    wireshark源码

    1. 我应该如何来看代码?如何找到突破点? 2. 有wireshark有了解的朋友,说说你们关于源码剖析的体会。 3. 说什么都可以,朋友觉得对我有用,有启发就好。千万别 “我顶,UP啊”。呵呵:emn23:我觉得重要的是看 pcap...

    迷宫小游戏

    这个小游戏是本人根据网上下的一个小游戏改编的.第二关和第三关没画墙(如果要画就调用SerStone(x,y))....希望熟悉MFC朋友能指点一下本人,最好把具体的代码写出来.发给本人,本人不胜感激.我的邮箱是pcx17.126.com.

    动站htm模板自动生成超级新闻系统

    我的服务器是支持ASP+ACCESS的,在我的机器上无论怎么试都非常正常,还望老兄你指点一二,我将非常感激! 站长: 由于本系统将在服务器上自动建立目录和文件,所以请确认你服务器是否打开支持FileSystemObject对象的...

    经纬度计算距离、方位角等java源码

    另一个可能接受一个点的经纬度、距离和方位角,计算出第二个点的经纬度。 在实际应用中,这些计算可能会用于定位服务、导航系统、地图上的点对点路径规划等。例如,在百度地图或Google地图API开发中,可以使用这样...

    LINUX系统移植及UBOOT代码分析.zip

    第一部分 前言....................................................................................................................................8 1 硬件环境.............................................

    智能象棋游戏(含C#源码)

    又看了一下电脑走旗, 感觉确实比较难处理, 没有高人指点写这个算法确实比较难, 应该比以前聪明 了一些, 但是还是比较笨, 打算有空去找个现在的电脑走旗组件替换上, 自己的电脑走旗算法慢慢研 究(当时是因为实在...

    C语言实现2048游戏(ege图形库版)

    这几天看到我们班上一个大神写了一个2048出来,我自己也想尝试一下,经过几天自己尝试努力下,自己终于写出来了。现在和大家分享一下,也希望能得到大神的指点。 实现的效果如图 先来讲一下我的思路吧 1.首先肯定...

    一维PDE传热的问题大家一起学习吧-111.zip

    load了一个mat文件,也就是我的实验数据,并且申明了全局变量,我昨天就在论坛里面问了个全局变量的问题的,这些开机就自动运行的代码其实主要是为调用变参数的m文件服务的。 mat.的文件如下mat文件好像不是论坛...

    一维PDE传热的问题大家一起学习吧-222.zip

    load了一个mat文件,也就是我的实验数据,并且申明了全局变量,我昨天就在论坛里面问了个全局变量的问题的,这些开机就自动运行的代码其实主要是为调用变参数的m文件服务的。 mat.的文件如下mat文件好像不是论坛...

    【无锁日志】易语言第一份日志系统。-易语言

    长时间运行的程序(例如服务器程序),或者流程复杂的多线程程序,打日志几乎是必需的,然而易这个圈子我到目前为止没有见过任何一个正经的日志轮子。 关于无锁 :无锁直接在未知的项目中大量使用的话,可能会比有锁...

Global site tag (gtag.js) - Google Analytics