选择了sqlite作为sql语言入门练习的数据库,因而也选择了同样轻便的编程工具AAuto,其封装了sqlite库,方便好用且很快写出一个带界面的小工具,有兴趣的OSC友只需到官网下载快手开发工具,解压缩,新建工程运行以下代码即可看到效果。 透过编写这个工具了解及
选择了sqlite作为sql语言入门练习的数据库, 因而也选择了同样轻便的编程工具AAuto ,其封装了sqlite 库,方便好用且很快写出一个带界面的小工具 ,有兴趣的OSC友只需到官网下载快手开发工具,解压缩,新建工程运行以下代码即可看到效果。
透过编写这个工具了解及学习了以下知识:
1.sql基本语言, sqlite数据库创建、数据增加、修改、删除及模糊查询,命名参数运用。
2.列表视图listview控件的简单操作运用。
3.windows控件、窗体的命令响应、通知,消息循环等知识。
4.aauto的编程语言的数据类型、名字空间等特点。
SQLite AAuto Quicker
import win.ui; import crreaDb; /*DSG{{*/ var winform = ..win.form(text="快手通讯录 by 菲菲OSC";right=558;bottom=427;parent=...) winform.add( button={cls="button";text="添加记录";left=19;top=19;right=100;bottom=48;z=1}; button2={cls="button";text="编辑记录";left=115;top=19;right=196;bottom=48;z=2}; button3={cls="button";text="删除记录";left=211;top=19;right=292;bottom=48;z=3}; button4={cls="button";text="查找";left=476;top=22;right=536;bottom=48;z=5}; dress={cls="edit";left=375;top=152;right=541;bottom=176;edge=1;z=9}; edit={cls="edit";text="输入查找条件...";left=318;top=21;right=457;bottom=48;edge=1;z=4}; emal={cls="edit";left=375;top=193;right=541;bottom=217;edge=1;z=10}; listview={cls="listview";left=19;top=69;right=292;bottom=408;bgcolor=16777215;edge=1;fullRow=1;z=6}; mark={cls="richedit";text="备注";left=313;top=280;right=543;bottom=408;edge=1;hscroll=1;multiline=1;vscroll=1;z=17}; name={cls="edit";left=375;top=71;right=541;bottom=95;edge=1;z=7}; qq={cls="edit";left=375;top=234;right=541;bottom=258;edge=1;z=11}; static={cls="static";text="姓名";left=319;top=69;right=359;bottom=93;transparent=1;z=12}; static2={cls="static";text="电话";left=319;top=110;right=359;bottom=134;transparent=1;z=13}; static3={cls="static";text="地址";left=319;top=152;right=359;bottom=176;transparent=1;z=14}; static4={cls="static";text="邮箱";left=319;top=193;right=359;bottom=217;transparent=1;z=15}; static5={cls="static";text="QQ/MSN";left=319;top=234;right=359;bottom=258;transparent=1;z=16}; tel={cls="edit";left=375;top=112;right=541;bottom=136;edge=1;z=8} ) /*}}*/ var sqlConnection = sqlite("\res\contact.db") crreaDb.careaTable(sqlConnection) // 显示数据 var showData = function(sql){ for id,姓名,电话, 地址,邮箱,QQ ,备注 in sqlConnection.each("select rowid,* from tl") { winform.listview.addItem({tostring(id);姓名;电话; 地址;邮箱;QQ;备注}) } } winform.listview.insertColumn("id",1) winform.listview.insertColumn("姓名",100) winform.listview.insertColumn("电话",100) winform.listview.insertColumn("地址",120) winform.listview.insertColumn("邮箱",120) winform.listview.insertColumn("QQ",80) winform.listview.insertColumn("备注",150) showData() winform.show() winform.button.oncommand = function(id,event){ // 添加 var name = winform.name.text var tel = winform.tel.text var dress = winform.dress.text var em = winform.emal.text var qq = winform.qq.text var mark = winform.mark.text crreaDb.addData(sqlConnection,name,tel,dress,em,qq,mark) id = sqlConnection.lastInsertRowid() var data = sqlConnection.stepQuery("select rowid,* from [tl] where rowid = "+id) winform.listview.addItem({tostring(data.id);data.name;data.tel;data.dress;data.em;data.qq;data.mark}) } winform.button3.oncommand = function(id,event){ // 删除 var coun = winform.listview.selIndex var id = winform.listview.getItemText(coun) if(id){ crreaDb.delData(sqlConnection,id) winform.listview.clear() showData() winform.listview.selIndex = coun } else { winform.msgbox("请选择要删除的列") } } winform.button2.oncommand = function(id,event){ // 编辑修改 crreaDb.editData(sqlConnection,name,tel,dress,em,qq,mark,id) } winform.button4.oncommand = function(id,event){ // 查询 var vv = winform.edit.text var id = crreaDb.inQuiry(sqlConnection,vv) winform.listview.clear() if(id){ for(i=1;#id;1){ winform.listview.addItem({tostring(id[i].rowid);id[i].name;id[i].tel; id[i].dress;id[i].em;id[i].qq;id[i].mark}) } } else { winform.msgbox("找不到记录") } } winform.edit.wndproc = function(hwnd,message,wParam,lParam){ if( message = 0x202/*_WM_LBUTTONUP*/ ) winform.edit.text = "" } winform.listview.onnotify = function(id,code,ptr){ select(code) { case 0xFFFFFF9B/*_LVN_ITEMCHANGED*/ { if(winform.listview.selIndex){ var lvw = winform.listview winform.name.text = lvw.getItemText(lvw.selIndex,2) winform.tel.text = lvw.getItemText(lvw.selIndex,3) winform.dress.text = lvw.getItemText(lvw.selIndex,4) winform.emal.text = lvw.getItemText(lvw.selIndex,5) winform.qq.text = lvw.getItemText(lvw.selIndex,6) winform.mark.tex = lvw.getItemText(lvw.selIndex,7) } } } } win.loopMessage(); sqlConnection.exec("VACUUM") sqlConnection.close() return winform;
namespace crreaDb; import sqlite; careaTable = function(db){ if( not db.existsTable("tl") ){ //创建表 db.exec( "create table tl( name, tel , dress, em, qq , mark );" ) } } // 添加数据 addData = function(db,name,tell,dress,em,qq,mark){ var command = db.prepare("insert into [tl] values ( @name,@tel,@dress,@em,@qq,@mark );" ) command.bind.parameterAtNames( name = name; tel = tell; dress = dress; em = em; qq = qq; mark = mark ).step() command.finalize() } // 删除 delData = function(db,id){ db.exec("DELETE FROM [%s] where rowid=%d;","tl",id) } // 修改 editData = function(db,name,tel,dress,em,qq,mark,id){ db.exec("UPDATE [tl] SET name = @name,tel=@te1 ,dress=@dress,em=@em,QQ=@qq,mark=@mark WHERE rowid = @id;",{ name = name; tel = tel; dress = dress; em = em; qq = qq; mark = mark; id = id }); } // 模糊查询 inQuiry = function(db,re){ var tab = db.getTable("select rowid,* from [tl] where ifnull(name,'') || ifnull(tel,'') || ifnull(QQ,'') like '%"+ re+ "%'") return tab }

MySQL在数据库和编程中的地位非常重要,它是一个开源的关系型数据库管理系统,广泛应用于各种应用场景。1)MySQL提供高效的数据存储、组织和检索功能,支持Web、移动和企业级系统。2)它使用客户端-服务器架构,支持多种存储引擎和索引优化。3)基本用法包括创建表和插入数据,高级用法涉及多表JOIN和复杂查询。4)常见问题如SQL语法错误和性能问题可以通过EXPLAIN命令和慢查询日志调试。5)性能优化方法包括合理使用索引、优化查询和使用缓存,最佳实践包括使用事务和PreparedStatemen

MySQL适合小型和大型企业。1)小型企业可使用MySQL进行基本数据管理,如存储客户信息。2)大型企业可利用MySQL处理海量数据和复杂业务逻辑,优化查询性能和事务处理。

InnoDB通过Next-KeyLocking机制有效防止幻读。1)Next-KeyLocking结合行锁和间隙锁,锁定记录及其间隙,防止新记录插入。2)在实际应用中,通过优化查询和调整隔离级别,可以减少锁竞争,提高并发性能。

MySQL不是一门编程语言,但其查询语言SQL具备编程语言的特性:1.SQL支持条件判断、循环和变量操作;2.通过存储过程、触发器和函数,用户可以在数据库中执行复杂逻辑操作。

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

MySQL是一个开源的关系型数据库管理系统,适用于数据存储、管理、查询和安全。1.它支持多种操作系统,广泛应用于Web应用等领域。2.通过客户端-服务器架构和不同存储引擎,MySQL高效处理数据。3.基本用法包括创建数据库和表,插入、查询和更新数据。4.高级用法涉及复杂查询和存储过程。5.常见错误可通过EXPLAIN语句调试。6.性能优化包括合理使用索引和优化查询语句。

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

InnoDB的锁机制包括共享锁、排他锁、意向锁、记录锁、间隙锁和下一个键锁。1.共享锁允许事务读取数据而不阻止其他事务读取。2.排他锁阻止其他事务读取和修改数据。3.意向锁优化锁效率。4.记录锁锁定索引记录。5.间隙锁锁定索引记录间隙。6.下一个键锁是记录锁和间隙锁的组合,确保数据一致性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver CS6
视觉化网页开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),