YYPOST群发软件 发表于 2025-12-16 09:35:40

AIWROK软件数据库MySQL实时内容随机调用

AIWROK软件数据库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;
            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("&#128204; 标题: " + content.title);
            printl("&#128203; 内容: " + content.content);
            printl("&#127991;️分类: " + content.category);
            printl("&#128336; 时间: " + 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;
            
            printl("\n--- 随机调用 [" + category + "] 分类内容 ---");
            
            var content = getRandomContentByCategory(category);
            if (content) {
                printl("&#128204; 标题: " + content.title);
                printl("&#128203; 内容: " + content.content);
                printl("&#127991;️分类: " + content.category);
                printl("&#128336; 时间: " + 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("===== 随机调取数据库内容示例结束 =====");


页: [1]
查看完整版本: AIWROK软件数据库MySQL实时内容随机调用