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

236

主题

191

回帖

1671

积分

管理员

积分
1671
数据库MySQL实时内容随机调用

1.png


2.png


  1. //🍎交流QQ群711841924群一,苹果内测群,528816639
  2. // 随机调取数据库内容示例
  3. // 该程序演示如何从远程数据库中随机获取和展示内容

  4. printl("===== 随机调取数据库内容示例 =====");

  5. var conn = null;

  6. /**
  7. * 连接数据库
  8. */
  9. function connectDatabase() {
  10.     try {
  11.         var url = "jdbc:mysql://mysql2.sqlpub.com:3307/chaook";
  12.         var user = "chaook";
  13.         var password = "JAVsRUMHkoJ123xJ";
  14.         var params = "?useSSL=false&characterEncoding=utf8";
  15.         
  16.         printl("正在连接数据库...");
  17.         conn = mysql.getConnection(url, user, password);
  18.         printl("✅ 数据库连接成功");
  19.         return true;
  20.     } catch (e) {
  21.         printl("❌ 数据库连接失败: " + e.message);
  22.         return false;
  23.     }
  24. }

  25. /**
  26. * 创建示例内容表
  27. */
  28. function createContentTable() {
  29.     try {
  30.         var sql = "CREATE TABLE IF NOT EXISTS 随机内容表 (" +
  31.                   "内容ID INT AUTO_INCREMENT PRIMARY KEY," +
  32.                   "标题 VARCHAR(100) NOT NULL," +
  33.                   "内容 TEXT," +
  34.                   "分类 VARCHAR(50)," +
  35.                   "创建时间 DATETIME DEFAULT CURRENT_TIMESTAMP" +
  36.                   ") ENGINE=InnoDB DEFAULT CHARSET=utf8";
  37.                   
  38.         var stmt = conn.createStatement();
  39.         stmt.executeUpdate(sql);
  40.         stmt.close();
  41.         printl("✅ 随机内容表创建成功");
  42.         return true;
  43.     } catch (e) {
  44.         printl("❌ 创建随机内容表失败: " + e.message);
  45.         return false;
  46.     }
  47. }

  48. /**
  49. * 插入示例内容数据
  50. */
  51. function insertSampleData() {
  52.     try {
  53.         var contents = [
  54.             {标题: "今日天气", 内容: "今天天气晴朗,万里无云,适合外出游玩。", 分类: "生活"},
  55.             {标题: "科技新闻", 内容: "最新发布的智能手机采用了革命性的AI技术,引领行业新潮流。", 分类: "科技"},
  56.             {标题: "健康贴士", 内容: "每天坚持适量运动有助于提高身体免疫力,预防疾病。", 分类: "健康"},
  57.             {标题: "美食推荐", 内容: "这家餐厅的招牌菜口感独特,深受食客喜爱。", 分类: "美食"},
  58.             {标题: "旅游攻略", 内容: "这座古城拥有悠久的历史文化,是游客必去的打卡地。", 分类: "旅游"},
  59.             {标题: "学习方法", 内容: "采用番茄工作法可以有效提高学习效率,值得尝试。", 分类: "教育"},
  60.             {标题: "理财建议", 内容: "定期储蓄和投资组合是财富增值的有效途径。", 分类: "财经"},
  61.             {标题: "电影资讯", 内容: "这部科幻大片特效震撼,剧情扣人心弦,不容错过。", 分类: "娱乐"},
  62.             {标题: "音乐欣赏", 内容: "这首古典乐曲旋律优美,能够陶冶情操,放松心情。", 分类: "娱乐"},
  63.             {标题: "读书分享", 内容: "这本小说情节跌宕起伏,人物刻画生动,值得一读。", 分类: "文化"}
  64.         ];
  65.         
  66.         var checkSql = "SELECT COUNT(*) AS total FROM 随机内容表";
  67.         var stmt = conn.createStatement();
  68.         var rs = stmt.executeQuery(checkSql);
  69.         rs.next();
  70.         var count = rs.getInt("total");
  71.         rs.close();
  72.         stmt.close();
  73.         
  74.         // 如果表中已有数据,则不再插入
  75.         if (count > 0) {
  76.             printl("✅ 表中已有数据,无需重复插入");
  77.             return true;
  78.         }
  79.         
  80.         var sql = "INSERT INTO 随机内容表 (标题, 内容, 分类) VALUES (?, ?, ?)";
  81.         var pstmt = conn.prepareStatement(sql);
  82.         
  83.         var insertedRecords = 0;
  84.         for (var i = 0; i < contents.length; i++) {
  85.             var content = contents[i];
  86.             pstmt.setString(1, content.标题);
  87.             pstmt.setString(2, content.内容);
  88.             pstmt.setString(3, content.分类);
  89.             
  90.             pstmt.executeUpdate();
  91.             insertedRecords++;
  92.         }
  93.         pstmt.close();
  94.         
  95.         printl("✅ 成功插入 " + insertedRecords + " 条示例内容");
  96.         return true;
  97.     } catch (e) {
  98.         printl("❌ 插入示例内容失败: " + e.message);
  99.         return false;
  100.     }
  101. }

  102. /**
  103. * 随机获取一条内容
  104. */
  105. function getRandomContent() {
  106.     try {
  107.         // 先获取总记录数
  108.         var countSql = "SELECT COUNT(*) AS total FROM 随机内容表";
  109.         var stmt = conn.createStatement();
  110.         var rs = stmt.executeQuery(countSql);
  111.         rs.next();
  112.         var totalCount = rs.getInt("total");
  113.         rs.close();
  114.         stmt.close();
  115.         
  116.         if (totalCount <= 0) {
  117.             printl("⚠️ 内容表为空,没有可随机获取的内容");
  118.             return null;
  119.         }
  120.         
  121.         // 生成随机偏移量
  122.         var randomOffset = Math.floor(Math.random() * totalCount);
  123.         
  124.         // 获取随机内容
  125.         var sql = "SELECT 内容ID, 标题, 内容, 分类, 创建时间 FROM 随机内容表 LIMIT 1 OFFSET ?";
  126.         var pstmt = conn.prepareStatement(sql);
  127.         pstmt.setInt(1, randomOffset);
  128.         rs = pstmt.executeQuery();
  129.         
  130.         var content = null;
  131.         if (rs.next()) {
  132.             content = {
  133.                 id: rs.getInt("内容ID"),
  134.                 title: rs.getString("标题"),
  135.                 content: rs.getString("内容"),
  136.                 category: rs.getString("分类"),
  137.                 createTime: rs.getTimestamp("创建时间")
  138.             };
  139.         }
  140.         
  141.         rs.close();
  142.         pstmt.close();
  143.         
  144.         return content;
  145.     } catch (e) {
  146.         printl("❌ 随机获取内容失败: " + e.message);
  147.         return null;
  148.     }
  149. }

  150. /**
  151. * 随机获取指定分类的内容
  152. */
  153. function getRandomContentByCategory(category) {
  154.     try {
  155.         // 先获取指定分类的总记录数
  156.         var countSql = "SELECT COUNT(*) AS total FROM 随机内容表 WHERE 分类 = ?";
  157.         var pstmt = conn.prepareStatement(countSql);
  158.         pstmt.setString(1, category);
  159.         var rs = pstmt.executeQuery();
  160.         rs.next();
  161.         var totalCount = rs.getInt("total");
  162.         rs.close();
  163.         pstmt.close();
  164.         
  165.         if (totalCount <= 0) {
  166.             printl("⚠️ 分类 '" + category + "' 下没有内容");
  167.             return null;
  168.         }
  169.         
  170.         // 生成随机偏移量
  171.         var randomOffset = Math.floor(Math.random() * totalCount);
  172.         
  173.         // 获取随机内容
  174.         var sql = "SELECT 内容ID, 标题, 内容, 分类, 创建时间 FROM 随机内容表 WHERE 分类 = ? LIMIT 1 OFFSET ?";
  175.         pstmt = conn.prepareStatement(sql);
  176.         pstmt.setString(1, category);
  177.         pstmt.setInt(2, randomOffset);
  178.         rs = pstmt.executeQuery();
  179.         
  180.         var content = null;
  181.         if (rs.next()) {
  182.             content = {
  183.                 id: rs.getInt("内容ID"),
  184.                 title: rs.getString("标题"),
  185.                 content: rs.getString("内容"),
  186.                 category: rs.getString("分类"),
  187.                 createTime: rs.getTimestamp("创建时间")
  188.             };
  189.         }
  190.         
  191.         rs.close();
  192.         pstmt.close();
  193.         
  194.         return content;
  195.     } catch (e) {
  196.         printl("❌ 随机获取分类内容失败: " + e.message);
  197.         return null;
  198.     }
  199. }

  200. /**
  201. * 获取所有分类
  202. */
  203. function getAllCategories() {
  204.     try {
  205.         var sql = "SELECT DISTINCT 分类 FROM 随机内容表";
  206.         var stmt = conn.createStatement();
  207.         var rs = stmt.executeQuery(sql);
  208.         
  209.         var categories = [];
  210.         while (rs.next()) {
  211.             categories.push(rs.getString("分类"));
  212.         }
  213.         
  214.         rs.close();
  215.         stmt.close();
  216.         
  217.         return categories;
  218.     } catch (e) {
  219.         printl("❌ 获取分类列表失败: " + e.message);
  220.         return [];
  221.     }
  222. }

  223. /**
  224. * 实时随机调用内容演示
  225. */
  226. function demoRandomContentFetching() {
  227.     printl("\n=== 开始随机内容调用演示 ===");
  228.    
  229.     // 随机调用5次内容
  230.     for (var i = 0; i < 5; i++) {
  231.         printl("\n--- 第 " + (i+1) + " 次随机调用 ---");
  232.         
  233.         var content = getRandomContent();
  234.         if (content) {
  235.             printl("📌 标题: " + content.title);
  236.             printl("📋 内容: " + content.content);
  237.             printl("🏷️  分类: " + content.category);
  238.             printl("🕐 时间: " + content.createTime);
  239.         } else {
  240.             printl("❌ 未能获取到内容");
  241.         }
  242.         
  243.         // 每次调用间隔1-3秒,模拟实时调用
  244.         var delay = 1000 + Math.floor(Math.random() * 2000);
  245.         java.lang.Thread.sleep(delay);
  246.     }
  247.    
  248.     printl("\n=== 按分类随机调用演示 ===");
  249.     var categories = getAllCategories();
  250.     if (categories.length > 0) {
  251.         // 随机选择3个分类进行演示
  252.         for (var i = 0; i < 3; i++) {
  253.             var randomCategoryIndex = Math.floor(Math.random() * categories.length);
  254.             var category = categories[randomCategoryIndex];
  255.             
  256.             printl("\n--- 随机调用 [" + category + "] 分类内容 ---");
  257.             
  258.             var content = getRandomContentByCategory(category);
  259.             if (content) {
  260.                 printl("📌 标题: " + content.title);
  261.                 printl("📋 内容: " + content.content);
  262.                 printl("🏷️  分类: " + content.category);
  263.                 printl("🕐 时间: " + content.createTime);
  264.             } else {
  265.                 printl("❌ 未能获取到内容");
  266.             }
  267.             
  268.             // 每次调用间隔1-2秒
  269.             var delay = 1000 + Math.floor(Math.random() * 1000);
  270.             java.lang.Thread.sleep(delay);
  271.         }
  272.     }
  273.    
  274.     printl("\n✅ 随机内容调用演示完成");
  275. }

  276. /**
  277. * 关闭数据库连接
  278. */
  279. function closeConnection() {
  280.     try {
  281.         if (conn != null) {
  282.             conn.close();
  283.         }
  284.         printl("✅ 数据库连接已关闭");
  285.     } catch (e) {
  286.         printl("❌ 关闭连接时出错: " + e.message);
  287.     }
  288. }

  289. // 主程序执行流程
  290. try {
  291.     // 1. 连接数据库
  292.     if (!connectDatabase()) {
  293.         throw new Error("数据库连接失败");
  294.     }
  295.    
  296.     // 2. 创建内容表
  297.     if (!createContentTable()) {
  298.         throw new Error("创建内容表失败");
  299.     }
  300.    
  301.     // 3. 插入示例数据
  302.     if (!insertSampleData()) {
  303.         throw new Error("插入示例数据失败");
  304.     }
  305.    
  306.     // 4. 演示随机调用内容
  307.     demoRandomContentFetching();
  308.    
  309. } catch (e) {
  310.     printl("❌ 程序执行过程中发生错误: " + e.message);
  311. } finally {
  312.     // 确保连接被关闭
  313.     closeConnection();
  314. }

  315. printl("===== 随机调取数据库内容示例结束 =====");
复制代码


上一篇: AIWROK软件分享一个特效苹果H5页面

下一篇: 没有了

举报 回复