验证记录是否存在或者查询记录个数¶
本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1a3vn7ph886
脚本说明¶
该脚本用于验证记录是否存在或查询记录个数。在MyApps平台中,可以通过SQL查询或使用countBySQL函数来检查记录是否存在或获取记录数量。
验证记录是否存在¶
方式1:使用countBySQL判断记录是否存在¶
(function(){
var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '字段值'";
var count = countBySQL(sql);
if(count > 0){
return true; // 记录存在
}else{
return false; // 记录不存在
}
})();
方式2:使用findBySQL判断记录是否存在¶
(function(){
var sql = "SELECT id FROM tlk_表单名 WHERE item_字段名 = '字段值'";
var result = findBySQL(sql);
if(result != null){
return true; // 记录存在
}else{
return false; // 记录不存在
}
})();
方式3:根据文档ID判断记录是否存在¶
(function(){
var docId = "文档ID";
var sql = "SELECT id FROM tlk_表单名 WHERE id = '" + docId + "'";
var count = countBySQL(sql);
return count > 0;
})();
方式4:根据多个条件判断记录是否存在¶
(function(){
var field1 = "值1";
var field2 = "值2";
var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段1 = '" + field1 + "' AND item_字段2 = '" + field2 + "'";
var count = countBySQL(sql);
return count > 0;
})();
查询记录个数¶
方式1:使用countBySQL查询记录个数¶
(function(){
var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '字段值'";
var count = countBySQL(sql);
return count;
})();
方式2:使用SQL COUNT查询记录个数¶
(function(){
var sql = "SELECT COUNT(*) as count FROM tlk_表单名 WHERE item_字段名 = '字段值'";
var result = findBySQL(sql);
if(result != null){
return result.getItemValueAsDouble("count");
}
return 0;
})();
方式3:查询所有记录个数¶
(function(){
var domainId = getWebUser().getDomainid();
var sql = "SELECT domainid FROM tlk_表单名 WHERE domainid = '" + domainId + "'";
var count = countBySQL(sql);
return count;
})();
方式4:根据条件查询记录个数¶
(function(){
var condition = "条件值";
var domainId = getWebUser().getDomainid();
var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '" + condition + "' AND domainid = '" + domainId + "'";
var count = countBySQL(sql);
return count;
})();
扩展示例¶
示例1:验证记录是否存在并返回详细信息¶
(function(){
var fieldValue = "字段值";
var sql = "SELECT id, item_字段名 FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
var result = findBySQL(sql);
if(result != null){
return "记录存在,ID: " + result.getId();
}else{
return "记录不存在";
}
})();
示例2:查询记录个数并分类统计¶
(function(){
var domainId = getWebUser().getDomainid();
// 查询总数
var totalSql = "SELECT domainid FROM tlk_表单名 WHERE domainid = '" + domainId + "'";
var total = countBySQL(totalSql);
// 查询状态为"已完成"的记录数
var completedSql = "SELECT domainid FROM tlk_表单名 WHERE item_状态 = '已完成' AND domainid = '" + domainId + "'";
var completed = countBySQL(completedSql);
// 查询状态为"进行中"的记录数
var processingSql = "SELECT domainid FROM tlk_表单名 WHERE item_状态 = '进行中' AND domainid = '" + domainId + "'";
var processing = countBySQL(processingSql);
var stats = {
total: total,
completed: completed,
processing: processing
};
return JSON.stringify(stats);
})();
示例3:验证记录是否存在并执行操作¶
(function(){
var docId = "文档ID";
var sql = "SELECT domainid FROM tlk_表单名 WHERE id = '" + docId + "'";
var count = countBySQL(sql);
if(count > 0){
// 记录存在,执行更新操作
var updateSql = "UPDATE tlk_表单名 SET item_状态 = '已处理' WHERE id = '" + docId + "'";
updateByDSName("数据源名称", updateSql);
return "记录已更新";
}else{
// 记录不存在,执行创建操作
return "记录不存在,需要创建";
}
})();
示例4:查询记录个数并格式化输出¶
(function(){
var fieldValue = "字段值";
var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
var count = countBySQL(sql);
var output = "查询条件: " + fieldValue + "\n";
output += "记录个数: " + count;
if(count > 0){
output += "\n状态: 存在记录";
}else{
output += "\n状态: 无记录";
}
return output;
})();
示例5:验证记录是否存在(多个条件)¶
(function(){
var field1 = "值1";
var field2 = "值2";
var field3 = "值3";
var domainId = getWebUser().getDomainid();
var sql = "SELECT domainid FROM tlk_表单名 WHERE " +
"item_字段1 = '" + field1 + "' AND " +
"item_字段2 = '" + field2 + "' AND " +
"item_字段3 = '" + field3 + "' AND " +
"domainid = '" + domainId + "'";
var count = countBySQL(sql);
return count > 0;
})();
示例6:查询记录个数并判断范围¶
(function(){
var fieldValue = "字段值";
var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
var count = countBySQL(sql);
if(count == 0){
return "无记录";
}else if(count == 1){
return "只有1条记录";
}else if(count <= 10){
return "有" + count + "条记录(少量)";
}else{
return "有" + count + "条记录(大量)";
}
})();
示例7:验证记录是否存在并返回记录ID¶
(function(){
var fieldValue = "字段值";
var sql = "SELECT id FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
var result = findBySQL(sql);
if(result != null){
return result.getId(); // 返回记录ID
}else{
return ""; // 记录不存在,返回空字符串
}
})();
示例8:查询记录个数并用于业务判断¶
(function(){
var userId = getWebUser().getId();
var domainId = getWebUser().getDomainid();
// 查询该用户创建的记录数
var sql = "SELECT domainid FROM tlk_表单名 WHERE item_创建人 = '" + userId + "' AND domainid = '" + domainId + "'";
var count = countBySQL(sql);
// 根据记录数进行业务判断
if(count == 0){
return "您还没有创建任何记录";
}else if(count < 10){
return "您已创建" + count + "条记录,继续加油!";
}else{
return "您已创建" + count + "条记录,非常棒!";
}
})();
示例9:验证记录是否存在(使用EXISTS)¶
(function(){
var fieldValue = "字段值";
var sql = "SELECT 1 FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
var result = findBySQL(sql);
return result != null;
})();
示例10:错误处理和日志记录¶
(function(){
var fieldValue = "字段值";
try{
var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
var count = countBySQL(sql);
println("查询条件: " + fieldValue);
println("记录个数: " + count);
if(count > 0){
println("记录存在");
return true;
}else{
println("记录不存在");
return false;
}
}catch(e){
println("错误: " + e.getMessage());
return false;
}
})();
关键函数说明¶
countBySQL(sql): 执行SQL查询并返回记录个数findBySQL(sql): 执行SQL查询并返回单条记录(如果存在)queryBySQL(sql): 执行SQL查询并返回多条记录updateByDSName(dsName, sql): 执行SQL更新语句getWebUser().getDomainid(): 获取当前用户的域IDgetWebUser().getId(): 获取当前用户的ID
SQL查询说明¶
COUNT查询¶
EXISTS查询¶
判断记录是否存在¶
- 使用
countBySQL()返回个数,判断是否大于0 - 使用
findBySQL()返回记录,判断是否为null
注意事项¶
- ⚠️ SQL注入: 构建SQL时注意防止SQL注入攻击,建议使用参数化查询
- ⚠️ 性能优化: 如果只需要判断是否存在,使用
countBySQL()比queryBySQL()更高效 - ⚠️ 域ID: 查询时建议加上域ID条件,避免跨域数据
- ⚠️ 空值处理: 查询结果可能为空,需要判断
- ⚠️ 字段名称: 注意表单字段在数据库中的命名规则(通常是
item_字段名) - 使用
countBySQL()可以快速获取记录个数 - 使用
findBySQL()可以判断记录是否存在并获取记录信息 - 建议在查询时加上域ID条件,确保数据安全
使用场景¶
- 验证数据是否重复
- 检查记录是否存在
- 统计记录数量
- 数据去重判断
- 业务规则验证
如需查看完整脚本代码,请访问源文档链接。