SQLite的数据类型

hkxy007 2024-04-17 21:09:12

SQLite的数据类型

首先你会接触到一个让你惊讶的名词: Typelessness(无类型). 对! SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么(只有在一种情况下不是, 稍后解释). 对于SQLite来说对字段不指定类型是完全有效的. 如:

Create Table ex1(a, b, c);

诚然SQLite允许忽略数据类型, 但是仍然建议在你的Create Table语句中指定数据类型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎时能起到一个提示或帮助的作用. SQLite支持常见的数据类型, 如:

CREATE TABLE ex2

a VARCHAR(10),

b NVARCHAR(15),

c TEXT,

d INTEGER,

e FLOAT,

f BOOLEAN,

g CLOB,

h BLOB,

i TIMESTAMP,

j NUMERIC(10,5)

k VARYING CHARACTER (24),

l NATIONAL VARYING CHARACTER(16)

前面提到在某种情况下, SQLite的字段并不是无类型的. 即在字段类型为”Integer Primary Key”时.

客户端管理

播报

编辑

SQLite亦可以作为桌面数据库使用,以下为第三方SQLite的GUI软件 [1]。例如:

SQLiteMan,使用QT开发的一个SQLite客户端,支持多语言、跨平台。

SQLiteSpy 轻量级的SQLite客户端,免费,单文件,界面设计紧凑,很稳定, 功能相对较少,创建表与添加数据均需sql语句,作为数据浏览和修改工具极佳。

SQLite Manager, 以火狐浏览器的扩展形式提供的SQLite客户端 [1]。

SQLite Database Browser, a graphical client to access SQLite databases [1]

SqlPro SQL Client, another graphical client to work with SQLite databases。

使用技巧

播报

编辑

用PHP操作sqlite数据库

a、 如何连接sqlite数据库?

1if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { 2 select * from sqlite_master;echo "数据库连接成功!"; 3} else { 4 die($sqliteerror); 5}

b、 如何列出数据库中所有的表?

1if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { 2 $result = sqlite_array_query($db, 'select * from sqlite_master;'); 3 foreach ($result as $entry) { 4 echo 'talbe name='.$entry['name']."n"; 5 echo 'sql='.$entry['sql']."n"; 6 echo "--------------------------------------------------------------------------------"; 7 } 8 sqlite_close($db); 9} else { 10 die($sqliteerror); 11}

c、 对sqlite数据库的查询,以及结果集的显示

1if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { 2 $result = sqlite_array_query($db, 'select name, email from user ', SQLITE_ASSOC); 3 echo "user表查询结果:n";echo " n name emailn"; 4 foreach ($result as $entry) { 5 echo ' '.$entry['name']." " $entry['email']."n"; 6 } 7 echo ' ';sqlite_close($db); 8} else { 9 die($sqliteerror); 10}

d、数据库对象记录的增加、删除、修改

1sqlite_query($db, "INSERT INTO user VALUES('user".$i."'" ",'user".$i."@ hichina. com')"); 2sqlite_query($db, "delete from user where user=’user99’"); 3sqlite_query($db, 'UPDATE user SET email="lilz@ hichina .com" where name="user1"');

用JAVA连接SQLite

先下载SQLite数据库的JDBC

这里给出一个中文站点的URL:(参见扩展阅读

将下载到的包解压后得到jar包 sqlitejdbc-v033-nested.jar 放到%JAVA_HOME%\lib 下,

并且将其添加到classpath系统环境变量中,我的classpath系统环境变量为:

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\sqlitejdbc-v033-nested.jar

在你的代码中引用这个驱动:

1Class.forName("org.sqlite.JDBC"); 2Connection conn = DriverManager.getConnection("jdbc:sqlite:filename");//filename为你的SQLite数据名称 3// ... use the database ... 4conn.close();

示例程序如下:

1import java.sql.*; 2import org.sqlite.JDBC; 3 4/** 这是个非常简单的SQLite的Java程序, 5 * 程序中创建数据库、创建表、然后插入数据, 6 * 最后读出数据显示出来*/ 7public class TestSQLite{ 8 public static void main(String[] args){ 9 try{ 10 //连接SQLite的JDBC 11 Class.forName("org.sqlite.JDBC"); 12 //建立一个数据库名zieckey.db的连接,如果不存在就在当前目录下创建之 13 Connection conn =DriverManager.getConnection("jdbc:sqlite:zieckey.db"); 14 Statement stat = conn.createStatement(); 15 stat.executeUpdate("create table tbl1(name varchar(20), salary int);");//创建一个表,两列 16 stat.executeUpdate("insert into tbl1values('ZhangSan',8000);");//插入数据 17 stat.executeUpdate("insert into tbl1values('LiSi',7800);"); 18 stat.executeUpdate("insert into tbl1values('WangWu',5800);"); 19 stat.executeUpdate("insert into tbl1values('ZhaoLiu',9100);"); 20 ResultSet rs = stat.executeQuery("select * from tbl1;");//查询数据 21 while(rs.next()){//将查询到的数据打印出来 22 System.out.print("name = "+ rs.getString("name")+" ");//列属性一 23 System.out.println("salary = "+ rs.getString("salary"));//列属性二 24 } 25 rs.close(); 26 conn.close();//结束数据库的连接 27 }catch(Exception e ){ 28 e.printStackTrace(); 29 } 30 } 31}

1E:\Coding\java\test>javac TestSQLite.java 2# 编译运行: 3E:\Coding\java\test>java TestSQLite 4name = ZhangSan salary = 8000 5name = LiSi salary = 7800 6name = WangWu salary = 5800 7name = ZhaoLiu salary = 9100

总结:本文介绍了嵌入式数据库SQLite在Java中的应用,

通过创建表、插入数据、查询等操作介绍了在Java中对数据库的操纵。 [2]

使用.NET操作SQLLITE

先下载ADO.NET2.0 Provider for SQLite。下载binaries zip版就可以了。下载完后解压缩,可以在bin目录下找到System.Data.SQLite.DLL。在vs2008中用Add Reference(添加引用)功能把System.Data.SQLite.DLL加到工程里就可以了。运行下面代码 [3]试试:

1string datasource = "e:/tmp/test.db"; 2System.Data.SQLite.SQLiteConnection.CreateFile(datasource); 3//连接数据库 4System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection(); 5System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder(); 6connstr.DataSource = datasource;connstr.Password = "admin";//设置密码,SQLite ADO.NET实现了数据库密码保护 7conn.ConnectionString = connstr.ToString();conn.Open(); 8//创建表 9System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand(); 10string sql = "CREATE TABLE test(username varchar(20),password varchar(20))"; 11cmd.CommandText = sql; 12cmd.Connection = conn;cmd.ExecuteNonQuery(); 13//插入数据 14sql = "INSERT INTO test VALUES('a','b')"; 15cmd.CommandText = sql;cmd.ExecuteNonQuery(); 16//取出数据 17sql = "SELECT * FROM test"; 18cmd.CommandText = sql; 19System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader(); 20StringBuilder sb = new StringBuilder(); 21while (reader.Read()){ 22 sb.Append("username:").Append(reader.GetString(0)).Append("\n").Append("password:").Append(reader.GetString(1)); 23} 24MessageBox.Show(sb.ToString());

使用linux下的C操作SQLLITE

由于linux下侧重使用命令,没有win的操作容易上手,所以在测试C操作SQLITE时会比较容易出现错误,给大家做一个简单的程序进行测试,演示怎么应用。

1#include <stdio.h> 2#include "sqlite3.h" 3int main( void ){ 4 sqlite3 *db = NULL; 5 char *zErrMsg = 0; 6 int rc; 7 //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 8 rc = sqlite3_open("zieckey.db", &db); 9 if( rc ){ 10 fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); 11 sqlite3_close(db); 12 exit(1); 13 }else 14 printf("You have opened a sqlite3 database" 15 " named zieckey.db successfully!\n" 16 "Congratulations! Have fun ! ^-^ \n"); 17 sqlite3_close(db); //关闭数据库 18 return 0; 19}

退出,保存。(代码输入完成后,按下 Esc 键,然后输入: :wq ,回车就好

...全文
373 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文深入探讨了DMA高效数据传输实现方案在高性能计算芯片领域的应用与架构创新,重点分析了缓存一致性DMA、多通道DMA架构及其在数据中心SmartNIC、存算一体芯片和Chiplet互连等场景中的实践。文章结合RISC-V架构,通过Chisel硬件描述语言和C语言驱动代码,展示了多通道DMA控制器的设计与实现,涵盖仲裁机制、AXI总线适配、分散-聚集传输模式及中断处理等核心技术,并强调了性能优化与验证方法。最后展望了AI调度、光互连、近存计算与安全DMA等未来发展方向。; 适合人群:具备数字电路与计算机体系结构基础,从事芯片设计、嵌入式开发或高性能计算相关工作的研发人员,尤其是有1-5年经验的工程师与研究人员。; 使用场景及目标:①理解DMA在突破“内存墙”和降低系统能耗中的关键技术路径;②掌握多通道DMA控制器的硬件设计与驱动开发方法;③应用于SmartNIC、AI加速器、Chiplet等高性能芯片系统的数据传输架构设计;④为构建高带宽、低延迟、高能效的异构计算平台提供参考。; 阅读建议:此资源融合硬件设计与软件驱动,建议结合Chisel仿真与RISC-V平台实操,重点关注DMA与缓存一致性、异构计算单元的协同机制,并通过性能计数器与错误注入手段进行系统级验证。
内容概要:本文围绕基于共享储能服务的智能楼宇双层优化配置展开研究,通过Matlab代码实现相应的数学建模与仿真分析,提出一种结合上层规划与下层运行的协同优化框架,旨在提升智能楼宇能源系统的经济性、能效水平与电网互动能力。研究充分考虑光伏发电、负荷需求、储能充放电等多元因素,采用先进的优化算法(如智能优化算法)对共享储能资源的容量配置与运行调度进行精细化决策,有效降低用能成本,提高可再生能源消纳率,并增强系统运行的稳定性与灵活性。全文涵盖模型构建、算法设计、求解流程及结果验证,具备较高的理论深度与工程应用价值; 适合人群:具备电力系统、能源管理、优化算法等相关背景的科研人员、研究生,以及从事智能电网、综合能源系统、建筑节能等领域的工程技术人员; 使用场景及目标:①用于智能楼宇及园区级能源系统的规划与运行优化研究;②支撑共享储能机制下的资源配置、经济调度与商业模式设计;③作为Matlab仿真教学与高水平论文复现的典型案例,帮助深入理解双层优化模型、主从博弈结构及智能算法在能源系统中的应用; 阅读建议:建议结合提供的Matlab代码进行同步学习与调试,重点关注上下层模型的耦合关系与迭代求解过程,可进一步拓展至多主体协同、不确定性建模(如风光出力波动)及鲁棒优化等前沿方向开展深化研究。
内容概要:本文《【故障检测】基于 KPCA 的故障检测【T2 和 Q 统计指数的可视化】(Matlab代码实现)》系统阐述了基于核主成分分析(KPCA)的非线性故障检测方法,重点实现了T²和Q统计量的构建与可视化过程。通过Matlab编程,将高维非线性数据映射至特征空间,提取主成分并建立监控模型,利用T²和Q指数对工业过程中的异常状态进行联合监测与诊断,有效提升了复杂系统中早期故障的识别能力,具有较强的工程实用性与理论参考价值。; 适合人群:适用于具备信号处理、控制工程或工业过程监测背景,熟悉Matlab编程语言,并从事故障诊断、智能运维、自动化系统研发等相关工作的研究生、科研人员及工程技术开发者。; 使用场景及目标:①应用于化工、电力、制造等流程工业中的关键设备状态监控与早期故障预警;②作为学术研究中KPCA算法的仿真验证平台,用于对比分析不同非线性降维方法的检测性能;③深化对非线性过程监控中统计指标设计与阈值判定机制的理解与实践应用。; 阅读建议:建议读者结合所提供的Matlab代码逐模块运行与调试,深入掌握KPCA建模流程、主成分子空间划分及T²、Q统计量的计算逻辑,鼓励在标准数据集(如TE过程)上复现实验结果,并尝试扩展至其他非线性场景以提升模型泛化能力。

2,508

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧