var conn = null; try { conn = createConnection(SQL, "test/sql 数据库 / 学生表 "); /* 通过 SQL 查询创建数据库连接,其中 SQL 表示查询类型, "test/sql 数据库 / 学生表 " 表示查询的路径,也可以通过数据源创建数据库连接,也 conn = createConnection(CONNECTION, "test/ 数据源 /SQLSERVER_ 数据源 ") */ var fgrid = getData(" 填报参数 1"); // " 填报参数 1" 表示填报参数组件的名称 var rowsOld = fgrid.rows(ORIGINAL); // 无变化的数据行 var rowsAdded = fgrid.rows(ADDED); // 增加的数据行 var rowsChanged = fgrid.rows(MODIFIED); // 更改数据行 var rowsDeleted = fgrid.rows(DELETED); // 删除数据行 if(rowsAdded != null){ var pstmt = conn.prepareStatement("insert into stu (stuName, stuAge, stuSex) values (?,?,?)"); /* 将数据插入数据库中,其中 stu 是要插入数据库的表名,stuName, stuAge, stuSex 是表 stu 中的列,分别与后面的问号相对应 */ for(var i = 0; i < rowsAdded.length; i++){ pstmt.setString (1, rowsAdded.stuName); pstmt.setInt (2, rowsAdded.stuAge); pstmt.setString (3, rowsAdded.stuSex); pstmt.executeUpdate(); } } /* 遍历所有行并更新数据库 , stuName, stuAge, stuSex 是填报参数中的列名分别与 values 中的问号相对应, string, int 分别表示对应列的数据类型 */ if(rowsDeleted != null) { var pstmt = conn.prepareStatement("delete from stu where stuId=?"); // 删除某一行, stu 是数据库中表的名字, stuId 是表的主键 for(var i = 0; i < rowsDeleted.length; i++){ pstmt.setInt(1, rowsDeleted.stuId); pstmt.executeUpdate(); } } /* 遍历所有行并更新数据库 , stuId 是表格 stu 的主键,与 where 条件中的问号对应, int 表示 stuId 的数据类型 */ if(rowsChanged != null){ var pstmt = conn.prepareStatement("update stu set stuName=?, stuAge=?, stuSex=? where stuId=?"); /* 更新数据库中数据,其中 stu 是要更新数据库的表名, stuName, stuAge, stuSex 是表 stu 中的列, stuId 是表的主键 */ for(var i = 0; i < rowsChanged.length; i++) { pstmt.setString(1, rowsChanged.stuName); pstmt.setInt(2, rowsChanged.stuAge); pstmt.setString(3, rowsChanged.stuSex); pstmt.setInt(4, rowsChanged.stuId); pstmt.executeUpdate(); } } } /* 遍历所有行并更新数据库 , stuName, stuAge, stuSex 是填报参数中的列名分别与上面语句中的问号相对应, string, int 分别表示对应列的数据类型 */ catch(e){ try { if(conn != null) { conn.rollback(); } } catch(e1) { } debug("Update DataBase Error: " + e); } finally { if(conn != null) { try { conn.commit(); fgrid.updateFlag(); conn.close(); } catch(e2) { } } }
上面是官方提供的脚本模板 我这边连接的postgreSql数据库 数据库里面的【时间】字段类型是【无时区的timestamp】类型 那我脚本里为预编译赋值的时候应该写什么类型呢?我之前用的pstmt.setString (1, rowsAdded.datetime); setString 提交后报错 提示数据库中用的是无时区的timestamp 不是 string类型
|