由于程序的需要,在SQLServer 中创建触发器及建表,碰到了在java 代码中执行创建触发器及表。

/**建立中间表*/

public static final String

createMiddleTableSQL =

"CREATE TABLE [dbo].[AlarmsMiddleTbl] ( "

+ " [id] [int] NOT NULL  , "

+ " [DeviceID] [smallint] NULL , "

+ " [Aid] [char] (10) COLLATE Chinese_PRC_BIN NULL , "

+ " [BeginTime] [datetime] NULL , "

+ " [EndTime] [datetime] NULL , "

+ " [Severity] [char] (2) COLLATE Chinese_PRC_BIN NULL , "

+ " [CondType] [char] (25) COLLATE Chinese_PRC_BIN NULL , "

+ " [DetailID] [smallint] NULL , "

+

" [AckNotes] [char] (150) COLLATE Chinese_PRC_BIN NULL , "

+

" [Description] [char] (255) COLLATE Chinese_PRC_BIN NULL , "

+

" [Systemtimes] [char] (30) COLLATE Chinese_PRC_BIN NULL "

+ ") ON [PRIMARY] ";

/**在告警表上创建触发器*/

public static final String createMiddleTblTriggerSQL =

"CREATE   TRIGGER t_alarms "

+ "ON [NTBW].[dbo].[Alarms] "

+ "FOR INSERT, UPDATE "

+ "AS "

+ "DECLARE  @rows int "

+ "SELECT @rows =  @@rowcount "

+ "IF @rows = 0 "

+ "  return "

+

"IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted) "

+ "BEGIN "

+ "  INSERT INTO [NTBW].[dbo].[AlarmsMiddleTbl] "

+ "  SELECT i.[id], i.[DeviceID], i.[Aid], i.[BeginTime], "

+

"  i.[EndTime], i.[Severity], i.[CondType], i.[DetailID], i.[AckNotes], "

+ "  i.[Description], getdate() from inserted i "

+ "END "

+

"IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted) AND "

+ " UPDATE(EndTime) "

+ "BEGIN "

+ "  INSERT INTO [NTBW].[dbo].[AlarmsMiddleTbl] "

+ "  SELECT i.[id], i.[DeviceID], i.[Aid], i.[BeginTime], "

+

"  i.[EndTime], i.[Severity], i.[CondType], i.[DetailID], i.[AckNotes], "

+ "  i.[Description], getdate() from inserted i "

+ "END "

+ "IF @@error <> 0 "

+ "BEGIN "

+ "  RAISERROR('ERROR',16,1) "

+ "  rollback transaction "

+ "  return "

+ "END ";

JAVA中执行以上语句过程:

view plaincopy to clipboardprint?

/**

* 创建中间表或者触发器

*

* @param sql String

* @return boolean 返回语句执行结果,true 成功,false 失败

*/

private boolean createTableOrTrigger(String sql)

{

Connection con = null;

PreparedStatement st = null;

boolean result = false;

try

{

con = dbh.getConnection();

st = con.prepareStatement(sql);

st.execute();

result = true;

dbh.closeConnections(null, st, con);

}

catch (SQLException ex)

{

Log.error("Unable to create :" +

sql + " ,ErrorCode :" + ex.getErrorCode() +

",Exception :" +

ex.getLocalizedMessage());

dbh.closeConnections(null, st, con);

}

return result;

}

java触发器如何创建表_在java 中执行触发器代码、创表语句相关推荐

  1. java 用流创建流_成为Java流大师–第1部分:创建流

    java 用流创建流 在许多情况下,声明性代码(例如,具有Streams的功能组合)提供了出色的代码指标. 通过该动手实验文章系列进行编码,并成为Java Streams的主教练,从而成为一名更好的J ...

  2. mysql 存储过程 表名_MySql存储过程中执行动态SQL(表名是变量)

    项目中要显示每个表的记录条数,但是因为数据库中的索引表中(infomation_schema.tables)记录的每个表的数据条数不是那么实时(超过3w多就不准了),所以要手动持久化一下再显示,持久化 ...

  3. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  4. java动态是如何根据实体建表_传入Java对象 自动创建动态表 并录入数据

    看到Hibernate你给一个对象,他就能动态的创建配置文件里面指定的表名,然后把数据录入到数据库,当初感觉是很神奇,不过,好像 Hibernate不能动态的分表创建表和录入数据 我这里写了一个公用的 ...

  5. java导出数据透视表_使用数据库中的Java流制作数据透视表

    java导出数据透视表 来自数据库行和表的原始数据不能为人类读者提供太多了解. 相反,如果我们对数据执行某种聚合,则人类更有可能看到数据模式 在向我们展示之前. 数据透视表是聚合的一种特定形式,我们可 ...

  6. JAVA两个表相关联_关于Java:如何将多对多关联映射到映射到两个不同表的类?...

    我有一个凭证-POJO映射到两个表. 第一个映射分配一个实体名称" voucherA",并将POJO映射到TableA. 第二个映射使用" voucherB"作 ...

  7. java线程的创建线程_多线程(Thread、线程创建、线程池)

    第1章 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序, ...

  8. java创建临时文件_用Java创建一个临时文件

    java创建临时文件 The task is to create a temporary file in Java. 任务是用Java创建一个临时文件. Creating a temporary fi ...

  9. java 实现内存数据表_数据结构 Java中的内存

    根据线性表的实际存储方式,分为两种实现模型: 顺序表 ,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示. 链表 ,将元素存放在通过链接构造起来的一系列存储块中. 一.顺 ...

最新文章

  1. OpenGL函数功能glutTimerFunc()
  2. 2018 AI产业投融资分析:热钱涌向何处,谁的“寒冬”将至?
  3. 博客园模板 样式优化
  4. Unity3D学习笔记(二) 一些常用的空间函数
  5. 为什么不敢和别人竞争_看懂这个自我评价发展曲线,你就明白,为什么青春期孩子如此叛逆...
  6. 7-4 吃货的最短路径 (10 分)
  7. Android Studio小技巧
  8. 一篇图像识别的科普文
  9. 了解java虚拟机—非堆相关参数设置(4)
  10. Java的clone方法
  11. Node.js 中 exports 和 module.exports 的区别
  12. Word编辑公式的快捷键与命令
  13. 【MDT】iPhone XS 系列屏幕素质报告
  14. angular 架构
  15. 阿里首席架构师讲解“双十一”亿级流量高并发的系统架构搭建方法
  16. Linux版本查看及PS1配置
  17. 企业文件加密系统 — 文件透明加密的优势和功能
  18. 还记得那些老国手吗? 07
  19. 开关电源环路补偿设计及调节笔记
  20. Windows下查看mysql是否启动

热门文章

  1. prim算法构建最小生成树
  2. C#弹窗提示输入密码
  3. 多尺度的CityNeRF: Building NeRF at City Scale
  4. Google X的机器人开始打工!进咖啡馆擦桌子:擦的很慢,但我们一直在做
  5. 论文简述 | 鸟瞰单目多体SLAM
  6. antd 侧边栏如何自适应高度
  7. pl/sql块的基本语法
  8. CSS中对字体进行设置
  9. linux平台的实验描述,基于LINUX的操作系统实验平台的设计与实现
  10. 取文字_取一个好听的女孩名字