数据写入数据库时出现如下报错

文章指出旧的MySQL驱动类`com.mysql.jdbc.Driver`已废弃,推荐使用新的驱动类`com.mysql.cj.jdbc.Driver`。新驱动通过SPI自动注册,通常不再需要手动加载。因此,用户需在配置文件中将驱动类名更新为`com.mysql.cj.jdbc.Driver`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

解决方法:

在配置文件中将com.mysql.jdbc.Driver改为如下:即加个cj即可

### SQLite 'attempt to write a readonly database' 错误解决方案 当尝试向SQLite数据库写入数据遇到 `attempt to write a readonly database` 的错误,通常是因为当前操作的数据库文件处于只读状态。以下是可能的原因以及对应的解决方法: #### 原因分析 1. **数据库路径问题**: 如果数据库文件位于只读目录下(如程序安装目录),则无法对其进行修改[^1]。 2. **权限不足**: 当前运行的应用程序没有足够的权限来更改该数据库文件[^3]。 3. **数据库未正确加载**: 可能存在数据库连接配置不正确的情况,导致实际使用的数据库是一个临的只读版本[^4]。 #### 解决方案 ##### 方法一:将数据库移动至可写的存储位置 对于 UWP 或其他现代应用框架,建议将数据库文件复制到应用程序的本地文件夹 (`LocalFolder`) 中再进行操作。这可以有效避免因为系统保护机制而导致的只读问题。 ```csharp // C# 示例代码:将数据库文件复制到 LocalFolder using Windows.Storage; using System.IO; async Task CopyDatabaseToLocalStorage() { string sourcePath = "Assets/mydatabase.db"; // 源数据库路径 StorageFile dbSourceFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri($"ms-appx://{sourcePath}")); string destinationPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "mydatabase_local.db"); await dbSourceFile.CopyAsync(ApplicationData.Current.LocalFolder, "mydatabase_local.db", NameCollisionOption.ReplaceExisting); } ``` ##### 方法二:调整文件访问权限 如果目标设备允许手动设置文件权限,则可以通过提升权限的方式解决问题。例如,在 Android 平台上通过修改外部存储器上的数据库文件属性实现。 注意:此方式适用于某些特定环境下的开发调试阶段;生产环境中应优先考虑更安全的方法。 ##### 方法三:验证并修正 SQLite 连接字符串 确保用于建立数据库链接的 URI 参数包含了必要的标志位以支持读写模式。例如在 C# WinForms 应用中使用如下格式定义连接串[^5]: ```csharp string connectionString = @"Data Source=|DataDirectory|\mydatabase.db;Version=3;"; connectionString += ";Journal Mode=Wal"; connectionString += ";Cache Size=-10000"; connectionString += ";Synchronous=Normal"; connectionString += ";Read Only=False"; // 显式声明为非只读模式 ``` 另外需要注意的是调用 `sqlite3_open()` 函数初始化数据库实例也要确认其参数是否指定了正确的文件名及路径。 --- ### 总结 上述三种途径分别针对不同场景提供了可行的技术手段去克服 SQLite 数据库仅限于阅读而不能编辑的情形。具体采用哪一种取决于项目需求与部署平台特性等因素影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值