【sqlite】错误代码整理

这两天为了一个问题折腾了好久,记载一下。

SQLite语句一定要严格按例子来写,例如:

"CREATE TABLE PunchData (Id Text primary key, Height Float, Angle Float, Radius Float, Strength Float)";


 "INSERT INTO PunchData(Id,Height, Angle, Radius, Strength) VALUES('{0}',{1},{2},{3},{4})";

创建的时候Id是Text类型,插入的时候,{0}要加单引号。。  否则,Id为0123是,通过数据库操作 读取出来后变为123了。


最下面是执行SQLite语句的时候,若出错,出错对应的ErrorCode和Message。

            try
            {
                using (DbCommand cmd = cnn.CreateCommand())
                {
                    cmd.CommandText = string.Format(punchInsertStr, punchData.id, punchData.height.ToString(),
                        punchData.angle.ToString(), punchData.radius.ToString(),
                        punchData.strength.ToString());
                    count = cmd.ExecuteNonQuery();
                }
            }
            catch (SQLiteException ex)
            {
             int  errorCode = (int)ex.ErrorCode;    

            }


//定义错误代码与相应的错误信息

 public readonly Dictionary<int, string> errorMessage = new Dictionary<int, string> {
        { 1, "SQL错误或丢失数据库" }, { 2, "SQLite 内部逻辑错误" },  { 3, "拒绝访问" },
        { 4, "回调函数请求取消操作" }, { 5, "数据库文件被锁定" } ,{ 19, "由于约束违例, 例如编号唯一" } 
        };


//界面上调用 ,返回错误信息

     string ErrorMassage =  errorMessage[errorCode]


附:

#define SQLITE_OK           0   /* 成功 | Successful result */
/* 错误码开始 */
#define SQLITE_ERROR        1   /* SQL错误 或 丢失数据库 | SQL error or missing database */
#define SQLITE_INTERNAL     2   /* SQLite 内部逻辑错误 | Internal logic error in SQLite */
#define SQLITE_PERM         3   /* 拒绝访问 | Access permission denied */
#define SQLITE_ABORT        4   /* 回调函数请求取消操作 | Callback routine requested an abort */
#define SQLITE_BUSY         5   /* 数据库文件被锁定 | The database file is locked */
#define SQLITE_LOCKED       6   /* 数据库中的一个表被锁定 | A table in the database is locked */
#define SQLITE_NOMEM        7   /* 某次 malloc() 函数调用失败 | A malloc() failed */
#define SQLITE_READONLY     8   /* 尝试写入一个只读数据库 | Attempt to write a readonly database */
#define SQLITE_INTERRUPT    9   /* 操作被 sqlite3_interupt() 函数中断 | Operation terminated by sqlite3_interrupt() */
#define SQLITE_IOERR       10   /* 发生某些磁盘 I/O 错误 | Some kind of disk I/O error occurred */
#define SQLITE_CORRUPT     11   /* 数据库磁盘映像不正确 | The database disk image is malformed */
#define SQLITE_NOTFOUND    12   /* sqlite3_file_control() 中出现未知操作数 | Unknown opcode in sqlite3_file_control() */
#define SQLITE_FULL        13   /* 因为数据库满导致插入失败 | Insertion failed because database is full */
#define SQLITE_CANTOPEN    14   /* 无法打开数据库文件 | Unable to open the database file */
#define SQLITE_PROTOCOL    15   /* 数据库锁定协议错误 | Database lock protocol error */
#define SQLITE_EMPTY       16   /* 数据库为空 | Database is empty */
#define SQLITE_SCHEMA      17   /* 数据结构发生改变 | The database schema changed */
#define SQLITE_TOOBIG      18   /* 字符串或二进制数据超过大小限制 | String or BLOB exceeds size limit */
#define SQLITE_CONSTRAINT  19   /* 由于约束违例而取消 | Abort due to constraint violation */        (例如:主键约束)
#define SQLITE_MISMATCH    20   /* 数据类型不匹配 | Data type mismatch */     
#define SQLITE_MISUSE      21   /* 不正确的库使用 | Library used incorrectly */
#define SQLITE_NOLFS       22   /* 使用了操作系统不支持的功能 | Uses OS features not supported on host */
#define SQLITE_AUTH        23   /* 授权失败 | Authorization denied */
#define SQLITE_FORMAT      24   /* 附加数据库格式错误 | Auxiliary database format error */
#define SQLITE_RANGE       25   /* 传递给sqlite3_bind()的第二个参数超出范围 | 2nd parameter to sqlite3_bind out of range */
#define SQLITE_NOTADB      26   /* 被打开的文件不是一个数据库文件 | File opened that is not a database file */
#define SQLITE_ROW         100  /* sqlite3_step() 已经产生一个行结果 | sqlite3_step() has another row ready */
#define SQLITE_DONE        101  /* sqlite3_step() 完成执行操作 | sqlite3_step() has finished executing */
/* 错误码结束 */

转载于:https://www.cnblogs.com/peterYong/p/6556683.html

### 回答1: SQLite 是一种轻量级的关系型数据库管理系统,它被广泛应用于各种应用程序开发中。虽然 SQLite 的官方文档是英文的,但是在网上也可以找到一些中文文档来帮助开发者更好地理解 SQLite。下面我们来谈谈 SQLite 中文文档。 首先,SQLite 的中文文档一般包括 SQLite 基本介绍、安装、配置、命令行交互、SQL 语句、可编程 API 等内容。对于初学者来说,这些内容非常有帮助。在中文文档中,每个主题都会有详细的介绍和说明,让读者能够更好地理解 SQLite 是如何工作的,以及如何使用它来管理数据。 其次,中文文档中一般会附带一些例子或代码片段,这让读者能够更快地上手和理解 SQLite 的一些概念和操作,提高学习效率。 最后,对于一些进阶操作,中文文档也会给出详细的说明和操作指南,让读者能够更好地应用 SQLite 到实际的项目中。 总的来说,SQLite 中文文档是开发者学习和使用 SQLite 的重要工具之一。通过阅读中文文档,开发者能够更好地掌握 SQLite 的基础知识和高级操作,为开发高品质的应用程序提供了有力的支持。 ### 回答2: SQLite是一种轻型、嵌入式关系型数据库管理系统,由于其高效、灵活、易用等特点而被广泛应用于移动设备、桌面应用程序、Web应用程序等领域。SQLite支持的数据类型包括NULL、INTEGER、REAL、TEXT、BLOB五种数据类型,并且支持事务、触发器、视图、外键等高级特性,可以大大提升数据库的处理性能和安全性。 对于初学者来说,掌握SQLite的各种功能需要一定的学习资料。其中中文文档是不可或缺的一个方面。在SQLite官网上可以找到官方英文文档,而中文文档通常由社区或者爱好者翻译和整理。根据个人经验,推荐两个中文文档网站:SQLite中文网(https://www.sqlite.org.cn/)和易百教程(https://www.yiibai.com/sqlite/)。 SQLite中文网是一个专门针对SQLite数据库的中文网站,提供了SQLite数据库的基础概念、SQL语句操作、高级特性等全面的中文资料。易百教程则是一个面向广大IT从业人员提供免费学习教程的网站,旗下拥有一系列SQLite教程,选材广泛、以实战为主,适合于初学者阅读。 总之,掌握SQLite的各种功能需要一定的学习资料,中文文档旨在帮助SQLite的学习者更好地、更快地掌握SQLite数据库的知识。建议初学者多参考多看一些相关文档和书籍,这样也会有助于快速进入SQLite开发的角色之中。 ### 回答3: SQLite是一种轻量级的关系型数据库管理系统,适用于各种小型应用程序。它是一个开源项目,可供在多个平台上使用,包括Windows、Linux、Mac OS等,而且还提供了多种编程语言接口,如C、Java、Python等。在SQLite中文文档中,你可以学习如何创建和使用SQLite数据库,以及如何在各种编程语言中使用SQLite API进行数据访问和操作。 SQLite中文文档可以帮助您了解各种命令和函数,以及如何使用它们来对数据库进行操作。文档中包含SQLite的基本概念、语法规则、常用的命令和函数说明,以及一些高级特性。此外,文档还提供了大量的示例代码和实践建议,让您学习SQLite变得更加简单。 对于像初学者和开发人员来说,SQLite中文文档是一个非常宝贵的资源。文档将指导您了解何时使用SQLiteSQLite的优势和SQLite限制,以及如何正确地使用SQLite来实现需求。它也帮助您避免在使用SQLite时常见的错误。 总之, SQLite中文文档是必备资源,无论您是为了学习SQLite还是在项目中应用SQLite,都非常有帮助。它将作为您入门SQLite的绝佳资料,并帮助您在开发中遇到的困难顺利解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值