mysql数据库的配置¶
本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1a4gd275ee9
脚本说明¶
该脚本用于配置MySQL数据库连接。在MyApps平台中,可以通过配置数据源来连接MySQL数据库,然后在脚本中使用该数据源进行数据库操作。
常见实现方式¶
方式1:配置MySQL数据源(基本配置)¶
在MyApps平台的数据源配置中,需要设置以下参数:
数据源名称: mysql_datasource
数据库类型: MySQL
驱动类: com.mysql.jdbc.Driver (MySQL 5.x)
驱动类: com.mysql.cj.jdbc.Driver (MySQL 8.x)
连接URL: jdbc:mysql://localhost:3306/database_name?useUnicode=true&characterEncoding=utf8
用户名: root
密码: your_password
方式2:MySQL 5.x配置¶
// 数据源配置示例
var datasourceName = "mysql_datasource";
var driverClass = "com.mysql.jdbc.Driver";
var jdbcUrl = "jdbc:mysql://localhost:3306/database_name?useUnicode=true&characterEncoding=utf8&useSSL=false";
var username = "root";
var password = "password";
方式3:MySQL 8.x配置¶
// 数据源配置示例
var datasourceName = "mysql_datasource";
var driverClass = "com.mysql.cj.jdbc.Driver";
var jdbcUrl = "jdbc:mysql://localhost:3306/database_name?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";
var username = "root";
var password = "password";
方式4:使用配置好的数据源¶
(function(){
var datasourceName = "mysql_datasource";
var sql = "SELECT * FROM table_name LIMIT 10";
var datas = queryByDSName(datasourceName, sql);
return datas;
})();
扩展示例¶
示例1:测试MySQL连接¶
(function(){
var datasourceName = "mysql_datasource";
try{
var sql = "SELECT 1 as test";
var result = findByDSName(datasourceName, sql);
if(result != null){
return "MySQL连接成功";
}else{
return "MySQL连接失败";
}
}catch(e){
return "MySQL连接错误: " + e.getMessage();
}
})();
示例2:查询MySQL数据库表¶
(function(){
var datasourceName = "mysql_datasource";
var sql = "SELECT * FROM table_name WHERE id = '1'";
var result = findByDSName(datasourceName, sql);
if(result != null){
var data = {
id: result.getItemValueAsString("id"),
name: result.getItemValueAsString("name")
};
return JSON.stringify(data);
}
return "{}";
})();
示例3:插入数据到MySQL¶
(function(){
var datasourceName = "mysql_datasource";
var name = "测试数据";
var value = 100;
var sql = "INSERT INTO table_name (name, value) VALUES ('" + name + "', " + value + ")";
updateByDSName(datasourceName, sql);
return "数据插入成功";
})();
示例4:更新MySQL数据¶
(function(){
var datasourceName = "mysql_datasource";
var id = "1";
var name = "更新后的名称";
var sql = "UPDATE table_name SET name = '" + name + "' WHERE id = '" + id + "'";
updateByDSName(datasourceName, sql);
return "数据更新成功";
})();
示例5:删除MySQL数据¶
(function(){
var datasourceName = "mysql_datasource";
var id = "1";
var sql = "DELETE FROM table_name WHERE id = '" + id + "'";
updateByDSName(datasourceName, sql);
return "数据删除成功";
})();
示例6:MySQL连接URL参数说明¶
// MySQL连接URL常用参数
var jdbcUrl = "jdbc:mysql://localhost:3306/database_name" +
"?useUnicode=true" + // 使用Unicode编码
"&characterEncoding=utf8" + // 字符编码
"&useSSL=false" + // 禁用SSL(开发环境)
"&serverTimezone=Asia/Shanghai" + // 时区设置(MySQL 8.x需要)
"&autoReconnect=true" + // 自动重连
"&failOverReadOnly=false"; // 故障转移时是否只读
示例7:MySQL字符集配置¶
// 在MySQL配置文件中设置字符集
// my.cnf 或 my.ini
/*
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
*/
// 在连接URL中指定字符集
var jdbcUrl = "jdbc:mysql://localhost:3306/database_name?characterEncoding=utf8mb4";
示例8:MySQL连接池配置¶
// 在数据源配置中设置连接池参数
/*
最大连接数: 20
最小空闲连接: 5
连接超时时间: 30000 (毫秒)
空闲连接回收时间: 600000 (毫秒)
*/
// 使用连接池的好处:
// 1. 提高性能,避免频繁创建和关闭连接
// 2. 控制连接数量,防止资源耗尽
// 3. 自动管理连接生命周期
示例9:MySQL事务处理¶
(function(){
var datasourceName = "mysql_datasource";
try{
// 开始事务(如果支持)
// 执行多个SQL操作
var sql1 = "UPDATE table1 SET value = value + 100 WHERE id = '1'";
updateByDSName(datasourceName, sql1);
var sql2 = "UPDATE table2 SET value = value - 100 WHERE id = '2'";
updateByDSName(datasourceName, sql2);
// 提交事务(如果支持)
return "事务执行成功";
}catch(e){
// 回滚事务(如果支持)
return "事务执行失败: " + e.getMessage();
}
})();
示例10:MySQL错误处理¶
(function(){
var datasourceName = "mysql_datasource";
var sql = "SELECT * FROM table_name";
try{
var datas = queryByDSName(datasourceName, sql);
if(datas != null && datas.size() > 0){
return "查询成功,共 " + datas.size() + " 条记录";
}else{
return "查询成功,但无数据";
}
}catch(e){
var errorMsg = e.getMessage();
// 常见错误处理
if(errorMsg.indexOf("Access denied") >= 0){
return "错误: 数据库访问被拒绝,请检查用户名和密码";
}else if(errorMsg.indexOf("Unknown database") >= 0){
return "错误: 数据库不存在";
}else if(errorMsg.indexOf("Connection refused") >= 0){
return "错误: 无法连接到数据库服务器";
}else{
return "错误: " + errorMsg;
}
}
})();
关键函数说明¶
queryByDSName(datasourceName, sql): 使用指定数据源执行查询并返回多条记录findByDSName(datasourceName, sql): 使用指定数据源执行查询并返回单条记录updateByDSName(datasourceName, sql): 使用指定数据源执行更新语句countByDSName(datasourceName, sql): 使用指定数据源执行查询并返回记录数
MySQL配置说明¶
数据源配置参数¶
- 数据源名称: 在MyApps平台中配置的数据源名称
- 驱动类: MySQL JDBC驱动类名
- MySQL 5.x:
com.mysql.jdbc.Driver - MySQL 8.x:
com.mysql.cj.jdbc.Driver - 连接URL: JDBC连接字符串
- 用户名: 数据库用户名
- 密码: 数据库密码
连接URL格式¶
常用URL参数¶
useUnicode=true: 使用Unicode编码characterEncoding=utf8: 字符编码(utf8或utf8mb4)useSSL=false: 是否使用SSL(开发环境建议false)serverTimezone=Asia/Shanghai: 时区设置(MySQL 8.x必需)autoReconnect=true: 自动重连failOverReadOnly=false: 故障转移时是否只读
注意事项¶
- ⚠️ 驱动版本: MySQL 8.x需要使用新的驱动类
com.mysql.cj.jdbc.Driver - ⚠️ 时区设置: MySQL 8.x需要在URL中设置
serverTimezone参数 - ⚠️ 字符编码: 建议使用
utf8mb4以支持完整的UTF-8字符集 - ⚠️ SSL连接: 生产环境建议启用SSL,开发环境可以禁用
- ⚠️ 连接池: 建议配置连接池以提高性能和资源管理
- ⚠️ SQL注入: 构建SQL时注意防止SQL注入攻击
- ⚠️ 错误处理: 建议添加try-catch进行错误处理
- MySQL 8.x与MySQL 5.x的驱动类和URL参数有所不同
- 建议在数据源配置中设置连接池参数
- 注意字符编码设置,避免中文乱码问题
使用场景¶
- 连接外部MySQL数据库
- 数据迁移和同步
- 跨系统数据查询
- 数据分析和报表
- 系统集成
如需查看完整脚本代码,请访问源文档链接。