APP下载

网络课程中嵌入式数据库技术的应用与编程实现

2022-08-29潘红玉刘博夫

电脑知识与技术 2022年20期
关键词:调用浏览器语句

潘红玉,刘博夫

(1.湖南师范大学教育科学学院,湖南长沙410081;2.湖南师范大学信息科学与工程学院,湖南长沙410081)

1 网络课程学习中存在的问题

在互联网高度发达的当今社会,人们的学习已离不开网络。除了通过网络查询相关知识,还可通过内容丰富而系统的网络课程进行有计划的自主学习。传统课堂学习中,学习的内容与进度都由教师掌控,学生只能被动地跟随,无法按自己的需求个性化地进行学习。网络课程的出现提供了新的解决方案,学生可以在线学习课堂上没学好的内容及其他自己感兴趣的内容,可以检测自己的学习成果,体现了以学习者为中心的教育理念,带来了教育资源共享、学习效果提升等好处。

网络课程以网页的形式呈现给学习者,网站后端有数据库系统、Web服务系统等提供支撑。但当前多数网络课程设计上还存在不足。学习效果评价与进度管理是网络课程学习中的重要环节,大多数网络课程提供的评价与管理功能不够完善,达不到全面评估、个性化和有针对性指导的目的。因面向的学生群体庞大,也没有足够的教师参与线上管理。这就需要学习者本人对学习过程与学习结果进行更多的自我管理与评估,或者由家长基于相关数据的查询与分析参与学生的学习管理。

现有网络课程都是将学习记录等数据存储在网站服务器上,一方面众多学习者的学习记录数据繁杂、数据量大,容易造成服务器负担过重,因此很多网络课程都没有保存详细的用户学习记录,即使保存了也不会全部向用户开放。不同的网络课程网址不同,数据所存的服务器可能不同,因此不同网络课程的后端数据很难整合,学习者不能轻松获取历史学习记录与统计数据,不方便进行统一的学习进度管理与相应的时间规划管理。

若在浏览器端将学习记录保存到本地SQLite数据库,可有效地改善这种状况。学生的学习记录与测评数据可存储在本地SQLite库文件中,学生可方便查看,家长也可调用查看,而不需要登录不同的网址从分散的信息源进行查询统计。

2 SQLite嵌入式数据库技术

SQLite 不同于传统数据库系统,它最大的优点是小巧,最小情况下只需占用几十K字节的存储空间,数据库以文件的形式保存,不需要安装复杂的管理系统就能使用[1]。它被众多编程语言支持,尤其是得到JavaScript 脚本语言的支持。在PC机浏览器以及手机浏览器中通过JavaScript可实现读写SQLite,手机中的App、PC机中的应用程序也可以访问。SQLite得到各种嵌入式设备支持,成为优秀的嵌入式数据库[2]。

SQLite 是实现了零配置、无服务端和事务处理的轻量型SQL数据库。SQLite单线程读写性能与MySQL相比并不逊色。SQLite 多个连接可以并发操作,允许从多个进程或线程访问,但是同一时间只允许一个写操作[3]。

SQLite 支持事务处理。事务(Transaction)是对数据库执行的一系列操作,是按逻辑顺序完成的一组操作语句。如:在数据库不同表中分别添加记录、更新某些字段数据、删除另一表中的记录等,它们即可构成一个事务。这些操作通常具有逻辑相关性,如记录某一学习内容的成绩,同时应将待学习内容数减一。事务机制可确保事务中的新建、修改、删除等操作都成功完成或都被取消,以保证数据的完整性和一致性[4]。

SQLite 支持SQL92 标准的大多数命令,如最常用的select查询、insert 插入、update 更新、delete 删除四大操作。与其他数据库如SQL Server 相比,SQLite 的操作是与程序共用同一进程进行的,SQL Server 则需要单独的数据库服务进程提供相应服务[5]。SQLite以文件形式提供服务,节省了网络开销,降低了数据传输时延。

HTML5 中引入了Web SQL DBTABASE,其为SQLite 数据库的访问提供了三个核心API函数,可在网页脚本语言中使用这些函数。

一是opendatabase 打开数据库函数,可使用现有数据库或创建新的数据库。其四个参数分别是数据库名、版本、数据库描述、数据库尺寸。

二是transaction 事务函数,用于组织事务中的SQL 功能语句并控制事务提交或回滚。

三是executeSql 执行SQL 语句函数。executeSql 有四个参数,第一是操作数据库的SQL 语句,第二是SQL 语句中使用的参数的数组,第三是语句操作成功调用的函数,第四是语句操作失败调用的函数。

3 网络课程中应用SQLite数据库技术的编程实现

3.1 工作原理

在新建的网络课程中增加对本地SQLite 数据库的支持。对原有网络课程按照相对一致的规范进行改造,增加对SQLite数据库的支持。这可通过为页面添加JS脚本代码实现,也可设计通用的浏览器扩展插件实现。

在网络课程中,将有利于学习者自我评价和学习进度管理的信息保存到本地SQLite数据库中。如学习进度信息、测评结果信息等。

设计适合PC 或手机终端使用的应用程序,采用主流的开发工具,如C#、Python、Android等,对各网络课程产生的学习记录与测评数据进行查看、采集与统计,为学习者开展自我学习评价与学习管理提供便利,为家长了解学生学习情况提供便利。

3.2 浏览器中数据库文件位置及管理

目前市场占有率最高的浏览器Google Chrome 对SQLite 数据库提供了很好的支持。Microsoft Edge 浏览器采用Chrome内核后,也能很好地支持SQLite数据库。

使用Google Chrome浏览器时,网页中创建的SQLite数据库缺省路径为:C:UsersAdministratorAppDataLocalGoogleChromeUser DataDefaultdatabases。

使用Microsoft edge浏览器时,网页中创建的SQLite数据库缺省路径为:C:UsersAdministratorAppDataLocalMicrosoftEdgeUser DataDefaultdatabases。

上述目录中databases.db是汇总数据库文件,其中的表da‐tabases记录了各个网站产生的数据库文件情况,每条记录对应一个数据库文件,id 字段保存唯一的记录号,记录号就是对应的数据库文件名称(数据库文件名采用无扩展名的形式)。ori‐gin来源字段保存网站的网址与端口号,如:http_localhost_8080代表的是http://localhost:8080这个地址。每个网站都有一个独立的二级目录保存其数据库文件,origin 字段的值就是其目录名。name 字段保存数据库名称,description 字段保存数据库文件的说明,estimated_size 字段保存表空间的估计大小。表结构见图1。

其中的file__0 子目录是本地磁盘中网页文件在双击运行后产生的数据库文件所保存的位置。

SQLite数据库可以用SQLiteStudio、SQLiteSpy等软件打开,并对其进行管理,可查看修改数据表的结构与记录。SQLit‐eStudio是开源且跨平台的管理工具,没有安装过程解压缩后即可使用。因SQLiteStudio中默认数据库扩展名为.db或.db3等,而浏览器产生的数据库文件没有扩展名,因此在add database选择数据库文件打开时,要选择all files 这一类型,才能找到对应数据库文件。

SQLiteStudio 软件在表结构操作界面中,双击已有字段可查看修改该字段属性,在已有字段下的空白位置双击可添加新字段。当浏览器等其他进程正在独占写数据库时,SQLiteStu‐dio 或其他应用程序可能无法打开该数据库,此时可复制生成数据库的副本用于数据的查看与统计处理。

3.3 网络课程中脚本语言访问SQLite数据库的编程实现

3.3.1 创建SQLite数据库并插入学习记录

不同学习网站同名的数据库保存在不同的子目录,同一网站不同名的数据库保存为不同的文件。数据库文件名都是通过汇总表中的唯一记录号来标识。

为网络课程或学习网站创建名为LearnDb 的SQLite 数据库。调用openDatabase 方法,这个方法在数据库已存在时为打开数据库,在数据库不存在时新建数据库文件。JS代码如下:

var db=openDatabase(′LearnDb′,′1.0′,′Course Db′,1024*1024);

if(!db){ console.log("数据库操作失败!");}

else { console.log("数据库操作成功!");}

创建或打开数据库成功后,调用transaction函数执行事务,用于数据表的创建和数据的一系列插入操作。事务机制能控制事务中的插入、更新、删除等操作都生效或都被取消。启动事务并获取当前日期时间的代码如下:

db.transaction( function(tx){ now=new Date();

var strtime = now.toLocaleDateString() + " " + now.toLocale‐TimeString();

调用executeSql 执行SQL 语句函数创建名为“learnRecord”的数据表,包含id 记录号、title 主题、content 内容、score 分数、time 时间字段,其中TEXT 文本类型也可使用VARCHAR 可变长度字符类型。代码如下:

tx.executeSql(′CREATE TABLE IF NOT EXISTS learnRe‐cord (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT,content TEXT,score REAL,time TEXT)′,[],

function(tx,result){console.log(′表操作成功′);},

function(tx,error) { console.log (′表操作失败:′ + error.mes‐sage);});

上面语句参数第二项为空数组,第三项为语句成功调用的回调函数,第四项为语句失败调用的回调函数。

创建表格成功后,再根据学习者的不同学习行为,调用ex‐ecuteSql 方法执行插入语句操作,在数据库表格中加入相应学习记录,相关代码如下:

tx.executeSql(′INSERT INTO learnRecord (title,content,time)VALUES (?,?,?)′, ["结束单元测试","第四单元:数列的学习",strtime],

function(tx,result){console.log(′插入记录成功′);},

function(tx,error){console.log(′插入记录失败′);});

tx.executeSql(′INSERT INTO learnRecord(title,content,score,time)VALUES(?,?,?,?)′,["单元测试成绩","第四单元:数列的学习",87,strtime],

function(tx,result){console.log(′记录分数成功′);},

function(tx,error){console.log(′记录分数失败′);});

上述代码中的insert 语句替换成update、delete 等其他SQL语句,即可实现记录的更新、删除等操作,完成数据的各项管理维护任务。

3.3.2 读取SQLite数据记录

调用transaction 函数,再调用executeSql 函数执行查询语句,可以从SQLite数据库表中读取数据,代码如下:

db.transaction(function(tx){

tx.executeSql(′SELECT*FROM learnRecord′,[],

function(tx,rs){

for(var i=0;i

document.getElementById("div1").innerHTML+=

rs.rows.item(i).title+""+rs.rows.item(i).time+"
";}},

function(tx,err){ console.log ("执行查询出错"+err.mes‐sage);});});

其中rs.rows代表查询得到的结果集中的所有记录行集合,item(i)代表第i 条记录,title 与time 分别为主题与时间字段,同理可访问各记录的其他字段,修改select 语句可实现数据的查询与统计功能。

4 结束语

嵌入式数据库的引入与应用,是对网络课程功能的拓展,在不增加网络流量负担和服务端存储压力的情况下,保留了更多个性化学习数据。这些数据能服务于学习者,帮助其发现问题,快速获得成长。统计后的数据也可再收集到服务端,为网络课程的升级提供依据。该技术具有良好的应用前景。

猜你喜欢

调用浏览器语句
重点:语句衔接
核电项目物项调用管理的应用研究
反浏览器指纹追踪
LabWindows/CVI下基于ActiveX技术的Excel调用
基于系统调用的恶意软件检测技术研究
环球浏览器
如何搞定语句衔接题
利用RFC技术实现SAP系统接口通信
作文语句实录