1. 程式人生 > >資料庫儲存過程,事務 jfinal中呼叫儲存過程,事務

資料庫儲存過程,事務 jfinal中呼叫儲存過程,事務

mysql


DELIMITER $$

CREATE
   PROCEDURE `student`.`ceshi`(n INT,j CHAR(1))

    BEGIN
    IF j = 'h' THEN 
    SELECT * FROM blog WHERE id > n;

ELSE
SELECT * FROM blog ;
END IF;

    END$$

DELIMITER ;

call ceshi(43,"a")
sqlserver


create proc Stu
@sname varchar(100) 
as 
begin
select name,age from
student where [email protected] end go exec Stu 'tom'

jfinal中 連線sqlserver

C3p0Plugin cp = new C3p0Plugin(getProperty("url"), getProperty("user"), getProperty("kwd"), getProperty("driverclass"));   
        me.add(cp);

        // 配置ActiveRecord外掛
        ActiveRecordPlugin arp = new ActiveRecordPlugin(cp
); me.add(arp); arp.setDialect(new SqlServerDialect()); arp.setContainerFactory(new CaseInsensitiveContainerFactory()); arp.addMapping("student", Student.class);

使用java下的jre,而不是jdk中的jre,使用tomcat,不使用jetty

create proc Stu
@sname varchar(100) 
as 
begin
select name,age from
student where [email protected] end go
public class Exec implements ICallback{

    @Override
    public Object call(Connection conn) throws SQLException {

         PreparedStatement stmt = conn.prepareStatement("{call dbo.Stu(?)}");
         stmt.setString(1, "tom");
          ResultSet rs = stmt.executeQuery();

          while (rs.next()) {
             System.out.println(rs.getString("age"));
          }
          rs.close();
          stmt.close();
        return null;
    }

}

在controller中

public void index()
    {
    Db.execute(new Exec());
    }

create proc CheckAge
@sname varchar(100) 
as 
begin
if ((select age from student where [email protected])>20)
return 1
else
return 0 
end
go
public class ReturnState implements ICallback {

    @Override
    public Object call(Connection conn) throws SQLException {
        // TODO Auto-generated method stub
        CallableStatement csmt = conn.prepareCall("{?=call dbo.CheckAge(?)}");
        csmt.registerOutParameter(1, java.sql.Types.INTEGER);
        csmt.setString(2, "tom");
        csmt.execute();
        System.out.println(csmt.getInt(1));
        return null;
    }

}
create proc IsExist
@sname varchar(100),
@IsRight int output 
as 
begin
if exists (select name,age from student where [email protected])
set @IsRight=1
else
set @IsRight=0 
end
go
public class ReturnCallBack implements ICallback{

    @Override
    public Object call(Connection conn) throws SQLException {
        CallableStatement callableStatement = conn.prepareCall("{call dbo.IsExist(?,?)}");

        callableStatement.setString(1, "tom");
        callableStatement.registerOutParameter(2, java.sql.Types.INTEGER);

        callableStatement.execute();

        System.out.println(callableStatement.getInt(2));

        return null;
    }

}

sqlserver 觸發器


create trigger bbq 
on tb_Money
after update
as begin 
select * from tb_Money
end 

sqlserver中使用事務


CREATE PROC ONETWOCCC 
AS
BEGIN TRAN 
update tb_Money set MyMoney = MyMoney - 30 where name = N'劉備'
update tb_Money set MyMoney = MyMoney + 30 where name = N'關羽'
if @@error<>0 
BEGIN
 ROLLBACK TRAN 
PRINT '有錯誤,回滾';
END
ELSE
BEGIN COMMIT TRAN
PRINT '執行成功'
END
GO

EXEC ONETWOCCC 



jfinal中使用事務

public void roll()
    {
        boolean succeed = Db. tx(new IAtom(){
            public boolean run() throws SQLException {
            int count = Db. update("update student set sex = sex+1 where id=2");
            int count2 = Db. update("update student set sex = sex+3 where id=31");
            return count == 1 && count2 == 1;
            }});
    }
    @Before(Tx.class)
    public void as()
    {

        int i = Db.update("update student set sex = sex+1 where id=2");
        int s = Db.update("update student set name = null where id=31");

        renderText(s+"");

    }

個人更推薦第一種

相關推薦

資料庫儲存過程事務 jfinal呼叫儲存過程事務

mysql DELIMITER $$ CREATE PROCEDURE `student`.`ceshi`(n INT,j CHAR(1)) BEGIN IF j = 'h' THEN SELECT * FROM blog

ASP呼叫儲存過程、語法、寫法-sql server資料庫,return,output

ASP與儲存過程(Stored Procedures)的文章不少,但是我懷疑作者們是否真正實踐過。我在初學時查閱過大量相關資料,發現其中提供的很多方法實際操作起來並不是那麼回事。對於簡單的應用,這些資料也許是有幫助的,但僅限於此,因為它們根本就是千篇一律,互相抄襲,稍微複雜

在PL/SQL呼叫儲存過程--oracle

在oracle10中寫好了儲存過程,程式碼如下: CREATE OR REPLACE Procedure Proc_Insert ( sName in varchar2, sAge in int,

oracle呼叫儲存過程

儲存過程的呼叫 增加,修改,刪除的儲存過程呼叫 帶輸入引數的儲存過程呼叫 帶輸出引數的儲存過程的呼叫:此處以登入成功還是失敗為例.返回0 或者1 增加,修改,刪除的儲存過程呼叫

shell呼叫儲存過程

將需要呼叫的儲存過程寫在檔案tasklist.txt中 下面將批量執行檔案列表中的儲存過程 #!/bin/ksh if [ $# -eq 0 ];then echo "no paramer please input one paramer A OR B" exit fi e

在phpmyadmin建立儲存過程並在php呼叫

ADDTIME (date2 ,time_interval ) //將time_interval加到date2 CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉換時區 CURRENT_DATE (  ) //當前日期 CURRENT_TIME (  ) //當前時間 CURR

oracle 函式呼叫儲存過程

  專案中開發了一個儲存過程來給報表提供資料來源,而程式業務邏輯中需要有一個對該資料來源進行判斷的功能,開始是使用拼接sql的方式在儲存過程中對應sql的外面包裝一層來進行處理,但是覺得這種方式拼接的sql太長,而且以後業務邏輯改變要同時修改儲存過程和程式碼,容易發生遺漏,

調取儲存過程的三個方法以及用mybatis呼叫儲存過程

調取儲存過程的三個方法: 1.如果是PL/SQL命令視窗就用execute(簡寫:exec )儲存過程名,舉個例子: EXEC procedure;--procedure是儲存過程名 2.如果是PL/SQL視窗就用 begin  儲存過程名  end; begi

CI框架呼叫儲存過程報錯:Commands out of sync; you can't run this command now

專案開發中碰到的問題,資料庫寫了個儲存過程,在ci框架中呼叫此儲存過程,碰到了問題,接觸ci框架時間不長,摸索了好半天,才終於解決。 問題如下: $common = $this->db->query("call welcome_common_data

Java呼叫儲存過程 -- Mybatis

Java中呼叫儲存過程 -- Mybatis public interface XXXMapper { ​ /* * 1.沒有出參(返回值,void) 返回不了值,返回值都封裝在入參的實體類或Map中(引用型別) * 原因:存過的入參、出參都在java呼叫的入參中

在Java呼叫儲存過程(詳細)

本文闡述了怎麼使用DBMS儲存過程。我闡述了使用儲存過程的基本的和高階特性,比如返回ResultSet。本文假設你對DBMS和JDBC已經非常熟悉,也假設你能夠毫無障礙地閱讀其它語言寫成的程式碼(即不是Java的語言),但是,並不要求你有任何儲存過程的程式設計經歷。  儲

MyBatis呼叫儲存過程和函式

一.呼叫儲存過程    1.首先在資料庫中定義儲存過程,定義的儲存過程的程式碼如下: //定義儲存過程create or replace procedure pag_add(p1 varchar2,p2 varchar2,p3 out varchar2) as begin

在python呼叫儲存過程

儲存過程一般來說在資料庫中直接定義,然後在python中呼叫 新建儲存過程: 執行 結果符合預期,接下來在python呼叫它 import pymysql conn = pymysql.connect(host='127.0.0.1', u

java呼叫儲存過程並傳遞list集合引數的方法

sql: CREATE OR REPLACE TYPE test as object( FID NUMBER,  NUM nVARCHAR2(30),  TESKID NUMBER,  CID NUMBER, USERCODE nVARCHAR2(100) ) CREA

C#呼叫儲存過程

1、沒有引數沒有返回值   2、有引數沒有返回值  3、有引數有返回值   下面就這幾種情況分別舉例:1、沒有引數沒有返回值,象這種情況最簡單。 儲存過程 USE Northwind  CREATE PROC novaluenoparameter  AS    SE

在SSH專案呼叫儲存過程

一. 建表與初始化資料 create database user create table userInfo ( id int identity(1,1) primary key not null, name varchar(20) not null, age int no

Wcf Ria Services學習筆記(三):WCF RIA Service呼叫儲存過程

            專案中碰到要呼叫儲存過程的情況!但Wcf Ria Service呼叫儲存過程似乎有點麻煩!將碰到的問題簡單做個記錄。 分別以幾個特別的儲存過程為例說明下,Wcf Ria Service中怎麼樣呼叫儲存過程。 (一)帶輸入引數和輸出引數的儲存過程。

.net呼叫儲存過程

摘要:在一個專案的開發中,經常會呼叫資料庫中的儲存過程。可是,幾乎所有儲存過程的呼叫都是同一個模式,主要區別就在於建立的每個引數型別、值等不一樣。那麼,能不能實現通過一個函式(或者類)呼叫所有的儲存過程呢?本文在利用資料庫提供的系統表原理上,實現了統一呼叫的方法,該方法只需

spring 事務處理同一個類:A方法(無事務)調B方法(有事務),事務不生效問題

public class MyEntry implements IBaseService{ public String A(String jsonStr) throws Exception{ UserInfo user = null; UserDetail userDetail = nul

關於一張RGB圖片在numpy儲存

假設圖片為 width:200 heigh:300 在numpy中,shape為 (1,300,200,3)  意思就是在矩陣中每一列,儲存一張圖片,即一個特徵。 就比如:[     [[0.0, 1.0], [2.0, 3.0], [4.0, 7.0], [