当前位置: 首页 > backend >正文

Unity 将Excel表格中的数据导入到Mysql数据表中

1.Mysql数据表users如下:

2.即将导入的Excel表格如下:

3.代码如下:

using System;
using System.Data;
using System.IO;
using Excel;
using MySql.Data.MySqlClient;
using UnityEngine;
using UnityEditor;public class ImportExcel
{// 数据库连接字符串,需根据实际情况修改private const string ConnectionString = "server=localhost;database=mygamedb;uid=root;pwd=123456;";[MenuItem("Excel操作/导入Excel数据到MySQL")]static void ImportExcelToMySQL(){string excelPath = Application.streamingAssetsPath + "/学生信息.xlsx";try{// 读取Excel数据DataRowCollection dataRows = ReadExcel(excelPath);if (dataRows != null && dataRows.Count > 0){// 连接MySQL数据库并插入数据InsertDataToMySQL(dataRows);}}catch (Exception e){Debug.LogError("导入数据时出错:" + e.Message);}}private static DataRowCollection ReadExcel(string path){try{using (FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read)){IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);DataSet result = excelReader.AsDataSet();return result.Tables[0].Rows;}}catch (Exception e){Debug.LogError("读取Excel文件时出错:" + e.Message);return null;}}private static void InsertDataToMySQL(DataRowCollection dataRows){using (MySqlConnection connection = new MySqlConnection(ConnectionString)){try{connection.Open();// 查询当前最大的id值string str_总数据条数 = "SELECT COUNT(*) AS total_records FROM users";MySqlCommand maxIdCommand = new MySqlCommand(str_总数据条数, connection);object obj_总数据条数 = maxIdCommand.ExecuteScalar();Debug.Log(Convert.ToInt32(obj_总数据条数));// 插入语句包含id字段,数据库自增长会自动赋值string insertQuery = "INSERT INTO users (id, username, password, registerdate) VALUES (@id, @username, @password, @registerdate)";using (MySqlCommand command = new MySqlCommand(insertQuery, connection)){// 从第二行开始插入数据,跳过标题行for (int i = 1; i < dataRows.Count; i++){DataRow row = dataRows[i];command.Parameters.Clear();command.Parameters.AddWithValue("@id", Convert.ToInt32(obj_总数据条数)+i);command.Parameters.AddWithValue("@username", row[0]);command.Parameters.AddWithValue("@password", row[1]);// 处理日期格式,假设Excel中的日期格式可直接转换DateTime registerDate;if (DateTime.TryParse(row[2].ToString(), out registerDate)){command.Parameters.AddWithValue("@registerdate", registerDate);}else{Debug.LogWarning("无法解析日期:" + row[2] + ",使用默认值");command.Parameters.AddWithValue("@registerdate", DateTime.Now);}command.ExecuteNonQuery();}}Debug.Log("数据成功导入到MySQL数据库");}catch (Exception e){Debug.LogError("插入数据到MySQL时出错:" + e.Message);}}}
}

http://www.xdnf.cn/news/1366.html

相关文章:

  • C++ 中 std::queue的使用详解
  • 线程封装
  • Pytorch图像数据转为Tensor张量
  • 初识Redis · 事务
  • HTTP:十一.HTTP认证概述
  • 12-DevOps-Gitlab托管Jenkinsfile
  • 使用 Conda 创建新环境
  • 关于Agent的简单构建和分享
  • 卷积神经网络(CNN)详细教程
  • LSTM-GAN生成数据技术
  • 计组1.2.3——计算机软件
  • 第十五届蓝桥杯 2024 C/C++组 合法密码
  • 《巧用DeepSeek快速搞定数据分析》书籍分享
  • 知识储备-DC综合相关
  • 大厂面试:MySQL篇
  • 深度剖析塔能科技精准节能方案:技术创新与实践价值
  • ShenNiusModularity项目源码学习(20:ShenNius.Admin.Mvc项目分析-5)
  • Git 远程操作全攻略:从基础到实战
  • jmeter中监控服务器ServerAgent
  • 华为开发岗暑期实习笔试(2025年4月16日)
  • 新品发布 | 6 秒全谱成像,VIX-N320 内置推扫式高光谱相机重磅发布
  • crictl 遇到报错 /run/containerd/containerd.sock: connect: permission denied
  • 设计模式--工厂模式详解
  • 【Docker】在Ubuntu平台上的安装部署
  • AIGC的爆发:哪些行业将被彻底颠覆?
  • Arduino示例代码讲解: Project 12 - Knock Lock 锁
  • # 06_Elastic Stack 从入门到实践(六)
  • 【MySQL】(7) 数据库设计
  • 【集合】底层原理实现及各集合之间的区别
  • 数据库操作