java sqlexec_java 执行Sql文件

定义数据库连接属性:

static String diverName="oracle.jdbc.driver.OracleDriver"; static String url = "jdbc:oracle:thin:@192.168.90.11:1521:ucap"; static String user="armyoa73015"; static String pwd = "armyoa73015";

1. 执行的方法(依赖ant.jar):

static String fileName = "D:\\workspace\\huzhou\\jd-txt73015\\sql\\f_xxyr_xlcjdj.sql"; public static void runSqlFile(){ SQLExec sqlExec = new SQLExec(); sqlExec.setDriver(diverName); sqlExec.setUrl(url); sqlExec.setUserid(user); sqlExec.setPassword(pwd); sqlExec.setSrc(new File(fileName)); sqlExec.setEncoding("GBK"); DelimiterType dt = new DelimiterType(); dt.setValue("row"); sqlExec.setDelimiterType(dt); sqlExec.setDelimiter("/"); sqlExec.setKeepformat(true); sqlExec.setProject(new Project()); sqlExec.execute(); }

2. 执行的方法(依赖mybatis-3.0.6.jar):

public static void runSqlFile1(){ try { Class.forName(diverName); Connection conn = DriverManager.getConnection(url, user, pwd); ScriptRunner runner = new ScriptRunner(conn); runner.setAutoCommit(true); File file = new File(fileName); try { if (file.getName().endsWith(".sql")) { runner.setFullLineDelimiter(true); runner.setDelimiter("##"); runner.setSendFullScript(false); runner.setAutoCommit(true); runner.setStopOnError(true); runner.runScript(new InputStreamReader(new FileInputStream(fileName),"GBK")); } }catch(Exception e){ e.printStackTrace(); } conn.close(); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

注:此方法执行后,存储过程、触发器、函数、包会处于无效状态。原因未知???

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用 PB 执行 SQL 语句插入或删除数据时,可以通过检查执行后返回的结果集中的记录数来判断插入或删除的数据条数。 举个例子,假设你使用 PB 的 SQLCA 对象执行了一条 INSERT 语句,那么你可以在执行后检查 SQLCA.ROWCOUNT 属性的值,这个属性会返回受影响的行数。如果返回的值是 1,则表示成功插入了一条新的数据记录。 同样的,如果你使用 PB 的 SQLCA 对象执行了一条 DELETE 语句,那么你可以在执行后检查 SQLCA.ROWCOUNT 属性的值,这个属性会返回被删除的行数。如果返回的值是 1,则表示成功删除了一条数据记录。 例如: ``` SQLExec("INSERT INTO mytable (col1, col2) VALUES (1, 2)") IF SQLCA.SQLCODE = 0 THEN MessageBox("插入了 " + String(SQLCA.ROWCOUNT) + " 条记录") END IF SQLExec("DELETE FROM mytable WHERE col1 = 1") IF SQLCA.SQLCODE = 0 THEN MessageBox("删除了 " + String(SQLCA.ROWCOUNT) + " 条记录") END IF ``` 需要注意的是,在执行 DELETE 语句时,如果条件所匹配的记录数为 0,则 SQLCA.ROWCOUNT 的值也会返回 0。这时你需要通过检查 SQLCA.SQLCODE 属性的 ### 回答2: 在使用PB执行SQL语句时,可以通过以下方法判断插入或删除数据的条数: 1. 插入数据的条数判断: 通常在PB中执行插入数据的SQL语句时,我们可以使用`SQLCA`中的`SQLCount`属性来获取插入的数据条数。`SQLCount`属性返回受影响的记录数量,即插入成功的数据条数。 示例代码如下: ``` long ll_rowCount DECLARE int ErrorCode INSERT INTO YourTable (column1, column2) VALUES ('value1', 'value2'); IF SQLCA.SQLCode = 0 THEN ll_rowCount = SQLCA.SQLCount MessageBox("提示", "成功插入" + String(ll_rowCount) + "条数据") ELSE ErrorCode = SQLCA.SQLCode MessageBox("错误", "插入数据失败,错误代码:" + String(ErrorCode)) END IF ``` 2. 删除数据的条数判断: 在PB中执行删除数据的SQL语句时,我们可以使用`SQLCA`中的`SQLCount`属性来获取删除的数据条数。`SQLCount`属性返回受影响的记录数量,即删除成功的数据条数。 示例代码如下: ``` long ll_rowCount DECLARE int ErrorCode DELETE FROM YourTable WHERE condition; IF SQLCA.SQLCode = 0 THEN ll_rowCount = SQLCA.SQLCount MessageBox("提示", "成功删除" + String(ll_rowCount) + "条数据") ELSE ErrorCode = SQLCA.SQLCode MessageBox("错误", "删除数据失败,错误代码:" + String(ErrorCode)) END IF ``` 需要注意的是,以上示例代码中的`YourTable`是指要插入或删除数据的表,`column1, column2`是要插入的列名,`value1, value2`是要插入的值,以及`condition`是删除数据的条件。根据实际情况进行修改。 ### 回答3: 在PB中执行SQL语句可以使用Select语句来判断插入和删除操作所影响的数据条数。 1. 插入数据的判断: 执行插入操作后,可以使用以下步骤判断插入的数据条数: a. 在DataWindow控件中执行SQL插入语句时,可以使用插入结果函数 dw_1.RowCount() 来获取插入的数据条数。 例子:int li_rowcount li_rowcount = dw_1.RowCount() b. 如果是通过数据库连接对象(sqlca)执行SQL插入语句,可以使用以下步骤判断插入的数据条数: - 定义一个变量来存储插入的数据条数,例如:li_rowcount - 执行插入操作后,通过sqlca.SQLNumRows()函数来获取插入的数据条数。 例子:int li_rowcount li_rowcount = sqlca.SQLNumRows() 2. 删除数据的判断: 执行删除操作时,可以使用以下步骤判断删除的数据条数: a. 在DataWindow控件中执行SQL删除语句时,可以使用删除结果函数 dw_1.RowCount() 来获取删除的数据条数。 例子:int li_rowcount li_rowcount = dw_1.RowCount() b. 如果是通过数据库连接对象(sqlca)执行SQL删除语句,可以使用以下步骤判断删除的数据条数: - 定义一个变量来存储删除的数据条数,例如:li_rowcount - 执行删除操作后,通过sqlca.SQLNumRows()函数来获取删除的数据条数。 例子:int li_rowcount li_rowcount = sqlca.SQLNumRows() 以上就是在PB中执行SQL语句如何判断插入和删除数据条数的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值