 | |  |  | 数据库MySQL实时内容随机调用
- //🍎交流QQ群711841924群一,苹果内测群,528816639
- // 随机调取数据库内容示例
- // 该程序演示如何从远程数据库中随机获取和展示内容
- printl("===== 随机调取数据库内容示例 =====");
- var conn = null;
- /**
- * 连接数据库
- */
- function connectDatabase() {
- try {
- var url = "jdbc:mysql://mysql2.sqlpub.com:3307/chaook";
- var user = "chaook";
- var password = "JAVsRUMHkoJ123xJ";
- var params = "?useSSL=false&characterEncoding=utf8";
-
- printl("正在连接数据库...");
- conn = mysql.getConnection(url, user, password);
- printl("✅ 数据库连接成功");
- return true;
- } catch (e) {
- printl("❌ 数据库连接失败: " + e.message);
- return false;
- }
- }
- /**
- * 创建示例内容表
- */
- function createContentTable() {
- try {
- var sql = "CREATE TABLE IF NOT EXISTS 随机内容表 (" +
- "内容ID INT AUTO_INCREMENT PRIMARY KEY," +
- "标题 VARCHAR(100) NOT NULL," +
- "内容 TEXT," +
- "分类 VARCHAR(50)," +
- "创建时间 DATETIME DEFAULT CURRENT_TIMESTAMP" +
- ") ENGINE=InnoDB DEFAULT CHARSET=utf8";
-
- var stmt = conn.createStatement();
- stmt.executeUpdate(sql);
- stmt.close();
- printl("✅ 随机内容表创建成功");
- return true;
- } catch (e) {
- printl("❌ 创建随机内容表失败: " + e.message);
- return false;
- }
- }
- /**
- * 插入示例内容数据
- */
- function insertSampleData() {
- try {
- var contents = [
- {标题: "今日天气", 内容: "今天天气晴朗,万里无云,适合外出游玩。", 分类: "生活"},
- {标题: "科技新闻", 内容: "最新发布的智能手机采用了革命性的AI技术,引领行业新潮流。", 分类: "科技"},
- {标题: "健康贴士", 内容: "每天坚持适量运动有助于提高身体免疫力,预防疾病。", 分类: "健康"},
- {标题: "美食推荐", 内容: "这家餐厅的招牌菜口感独特,深受食客喜爱。", 分类: "美食"},
- {标题: "旅游攻略", 内容: "这座古城拥有悠久的历史文化,是游客必去的打卡地。", 分类: "旅游"},
- {标题: "学习方法", 内容: "采用番茄工作法可以有效提高学习效率,值得尝试。", 分类: "教育"},
- {标题: "理财建议", 内容: "定期储蓄和投资组合是财富增值的有效途径。", 分类: "财经"},
- {标题: "电影资讯", 内容: "这部科幻大片特效震撼,剧情扣人心弦,不容错过。", 分类: "娱乐"},
- {标题: "音乐欣赏", 内容: "这首古典乐曲旋律优美,能够陶冶情操,放松心情。", 分类: "娱乐"},
- {标题: "读书分享", 内容: "这本小说情节跌宕起伏,人物刻画生动,值得一读。", 分类: "文化"}
- ];
-
- var checkSql = "SELECT COUNT(*) AS total FROM 随机内容表";
- var stmt = conn.createStatement();
- var rs = stmt.executeQuery(checkSql);
- rs.next();
- var count = rs.getInt("total");
- rs.close();
- stmt.close();
-
- // 如果表中已有数据,则不再插入
- if (count > 0) {
- printl("✅ 表中已有数据,无需重复插入");
- return true;
- }
-
- var sql = "INSERT INTO 随机内容表 (标题, 内容, 分类) VALUES (?, ?, ?)";
- var pstmt = conn.prepareStatement(sql);
-
- var insertedRecords = 0;
- for (var i = 0; i < contents.length; i++) {
- var content = contents[i];
- pstmt.setString(1, content.标题);
- pstmt.setString(2, content.内容);
- pstmt.setString(3, content.分类);
-
- pstmt.executeUpdate();
- insertedRecords++;
- }
- pstmt.close();
-
- printl("✅ 成功插入 " + insertedRecords + " 条示例内容");
- return true;
- } catch (e) {
- printl("❌ 插入示例内容失败: " + e.message);
- return false;
- }
- }
- /**
- * 随机获取一条内容
- */
- function getRandomContent() {
- try {
- // 先获取总记录数
- var countSql = "SELECT COUNT(*) AS total FROM 随机内容表";
- var stmt = conn.createStatement();
- var rs = stmt.executeQuery(countSql);
- rs.next();
- var totalCount = rs.getInt("total");
- rs.close();
- stmt.close();
-
- if (totalCount <= 0) {
- printl("⚠️ 内容表为空,没有可随机获取的内容");
- return null;
- }
-
- // 生成随机偏移量
- var randomOffset = Math.floor(Math.random() * totalCount);
-
- // 获取随机内容
- var sql = "SELECT 内容ID, 标题, 内容, 分类, 创建时间 FROM 随机内容表 LIMIT 1 OFFSET ?";
- var pstmt = conn.prepareStatement(sql);
- pstmt.setInt(1, randomOffset);
- rs = pstmt.executeQuery();
-
- var content = null;
- if (rs.next()) {
- content = {
- id: rs.getInt("内容ID"),
- title: rs.getString("标题"),
- content: rs.getString("内容"),
- category: rs.getString("分类"),
- createTime: rs.getTimestamp("创建时间")
- };
- }
-
- rs.close();
- pstmt.close();
-
- return content;
- } catch (e) {
- printl("❌ 随机获取内容失败: " + e.message);
- return null;
- }
- }
- /**
- * 随机获取指定分类的内容
- */
- function getRandomContentByCategory(category) {
- try {
- // 先获取指定分类的总记录数
- var countSql = "SELECT COUNT(*) AS total FROM 随机内容表 WHERE 分类 = ?";
- var pstmt = conn.prepareStatement(countSql);
- pstmt.setString(1, category);
- var rs = pstmt.executeQuery();
- rs.next();
- var totalCount = rs.getInt("total");
- rs.close();
- pstmt.close();
-
- if (totalCount <= 0) {
- printl("⚠️ 分类 '" + category + "' 下没有内容");
- return null;
- }
-
- // 生成随机偏移量
- var randomOffset = Math.floor(Math.random() * totalCount);
-
- // 获取随机内容
- var sql = "SELECT 内容ID, 标题, 内容, 分类, 创建时间 FROM 随机内容表 WHERE 分类 = ? LIMIT 1 OFFSET ?";
- pstmt = conn.prepareStatement(sql);
- pstmt.setString(1, category);
- pstmt.setInt(2, randomOffset);
- rs = pstmt.executeQuery();
-
- var content = null;
- if (rs.next()) {
- content = {
- id: rs.getInt("内容ID"),
- title: rs.getString("标题"),
- content: rs.getString("内容"),
- category: rs.getString("分类"),
- createTime: rs.getTimestamp("创建时间")
- };
- }
-
- rs.close();
- pstmt.close();
-
- return content;
- } catch (e) {
- printl("❌ 随机获取分类内容失败: " + e.message);
- return null;
- }
- }
- /**
- * 获取所有分类
- */
- function getAllCategories() {
- try {
- var sql = "SELECT DISTINCT 分类 FROM 随机内容表";
- var stmt = conn.createStatement();
- var rs = stmt.executeQuery(sql);
-
- var categories = [];
- while (rs.next()) {
- categories.push(rs.getString("分类"));
- }
-
- rs.close();
- stmt.close();
-
- return categories;
- } catch (e) {
- printl("❌ 获取分类列表失败: " + e.message);
- return [];
- }
- }
- /**
- * 实时随机调用内容演示
- */
- function demoRandomContentFetching() {
- printl("\n=== 开始随机内容调用演示 ===");
-
- // 随机调用5次内容
- for (var i = 0; i < 5; i++) {
- printl("\n--- 第 " + (i+1) + " 次随机调用 ---");
-
- var content = getRandomContent();
- if (content) {
- printl("📌 标题: " + content.title);
- printl("📋 内容: " + content.content);
- printl("🏷️ 分类: " + content.category);
- printl("🕐 时间: " + content.createTime);
- } else {
- printl("❌ 未能获取到内容");
- }
-
- // 每次调用间隔1-3秒,模拟实时调用
- var delay = 1000 + Math.floor(Math.random() * 2000);
- java.lang.Thread.sleep(delay);
- }
-
- printl("\n=== 按分类随机调用演示 ===");
- var categories = getAllCategories();
- if (categories.length > 0) {
- // 随机选择3个分类进行演示
- for (var i = 0; i < 3; i++) {
- var randomCategoryIndex = Math.floor(Math.random() * categories.length);
- var category = categories[randomCategoryIndex];
-
- printl("\n--- 随机调用 [" + category + "] 分类内容 ---");
-
- var content = getRandomContentByCategory(category);
- if (content) {
- printl("📌 标题: " + content.title);
- printl("📋 内容: " + content.content);
- printl("🏷️ 分类: " + content.category);
- printl("🕐 时间: " + content.createTime);
- } else {
- printl("❌ 未能获取到内容");
- }
-
- // 每次调用间隔1-2秒
- var delay = 1000 + Math.floor(Math.random() * 1000);
- java.lang.Thread.sleep(delay);
- }
- }
-
- printl("\n✅ 随机内容调用演示完成");
- }
- /**
- * 关闭数据库连接
- */
- function closeConnection() {
- try {
- if (conn != null) {
- conn.close();
- }
- printl("✅ 数据库连接已关闭");
- } catch (e) {
- printl("❌ 关闭连接时出错: " + e.message);
- }
- }
- // 主程序执行流程
- try {
- // 1. 连接数据库
- if (!connectDatabase()) {
- throw new Error("数据库连接失败");
- }
-
- // 2. 创建内容表
- if (!createContentTable()) {
- throw new Error("创建内容表失败");
- }
-
- // 3. 插入示例数据
- if (!insertSampleData()) {
- throw new Error("插入示例数据失败");
- }
-
- // 4. 演示随机调用内容
- demoRandomContentFetching();
-
- } catch (e) {
- printl("❌ 程序执行过程中发生错误: " + e.message);
- } finally {
- // 确保连接被关闭
- closeConnection();
- }
- printl("===== 随机调取数据库内容示例结束 =====");
复制代码
| |  | |  |
|