当前位置:Gxlcms > mysql > sqlite入门练习,通讯录增删改查

sqlite入门练习,通讯录增删改查

时间:2021-07-01 10:21:17 帮助过:18人阅读

选择了sqlite作为sql语言入门练习的数据库,因而也选择了同样轻便的编程工具AAuto,其封装了sqlite库,方便好用且很快写出一个带界面的小工具,有兴趣的OSC友只需到官网下载快手开发工具,解压缩,新建工程运行以下代码即可看到效果。 透过编写这个工具了解及

选择了sqlite作为sql语言入门练习的数据库, 因而也选择了同样轻便的编程工具AAuto ,其封装了sqlite 库,方便好用且很快写出一个带界面的小工具 ,有兴趣的OSC友只需到官网下载快手开发工具,解压缩,新建工程运行以下代码即可看到效果。

透过编写这个工具了解及学习了以下知识:
1.sql基本语言, sqlite数据库创建、数据增加、修改、删除及模糊查询,命名参数运用。
2.列表视图listview控件的简单操作运用。
3.windows控件、窗体的命令响应、通知,消息循环等知识。
4.aauto的编程语言的数据类型、名字空间等特点。


SQLite AAuto Quicker

  1. import win.ui;
  2. import crreaDb;
  3. /*DSG{{*/
  4. var winform = ..win.form(text="快手通讯录 by 菲菲OSC";right=558;bottom=427;parent=...)
  5. winform.add(
  6. button={cls="button";text="添加记录";left=19;top=19;right=100;bottom=48;z=1};
  7. button2={cls="button";text="编辑记录";left=115;top=19;right=196;bottom=48;z=2};
  8. button3={cls="button";text="删除记录";left=211;top=19;right=292;bottom=48;z=3};
  9. button4={cls="button";text="查找";left=476;top=22;right=536;bottom=48;z=5};
  10. dress={cls="edit";left=375;top=152;right=541;bottom=176;edge=1;z=9};
  11. edit={cls="edit";text="输入查找条件...";left=318;top=21;right=457;bottom=48;edge=1;z=4};
  12. emal={cls="edit";left=375;top=193;right=541;bottom=217;edge=1;z=10};
  13. listview={cls="listview";left=19;top=69;right=292;bottom=408;bgcolor=16777215;edge=1;fullRow=1;z=6};
  14. mark={cls="richedit";text="备注";left=313;top=280;right=543;bottom=408;edge=1;hscroll=1;multiline=1;vscroll=1;z=17};
  15. name={cls="edit";left=375;top=71;right=541;bottom=95;edge=1;z=7};
  16. qq={cls="edit";left=375;top=234;right=541;bottom=258;edge=1;z=11};
  17. static={cls="static";text="姓名";left=319;top=69;right=359;bottom=93;transparent=1;z=12};
  18. static2={cls="static";text="电话";left=319;top=110;right=359;bottom=134;transparent=1;z=13};
  19. static3={cls="static";text="地址";left=319;top=152;right=359;bottom=176;transparent=1;z=14};
  20. static4={cls="static";text="邮箱";left=319;top=193;right=359;bottom=217;transparent=1;z=15};
  21. static5={cls="static";text="QQ/MSN";left=319;top=234;right=359;bottom=258;transparent=1;z=16};
  22. tel={cls="edit";left=375;top=112;right=541;bottom=136;edge=1;z=8}
  23. )
  24. /*}}*/
  25. var sqlConnection = sqlite("\res\contact.db")
  26. crreaDb.careaTable(sqlConnection)
  27. // 显示数据
  28. var showData = function(sql){
  29. for id,姓名,电话, 地址,邮箱,QQ ,备注 in sqlConnection.each("select rowid,* from tl") {
  30. winform.listview.addItem({tostring(id);姓名;电话; 地址;邮箱;QQ;备注})
  31. }
  32. }
  33. winform.listview.insertColumn("id",1)
  34. winform.listview.insertColumn("姓名",100)
  35. winform.listview.insertColumn("电话",100)
  36. winform.listview.insertColumn("地址",120)
  37. winform.listview.insertColumn("邮箱",120)
  38. winform.listview.insertColumn("QQ",80)
  39. winform.listview.insertColumn("备注",150)
  40. showData()
  41. winform.show()
  42. winform.button.oncommand = function(id,event){
  43. // 添加
  44. var name = winform.name.text
  45. var tel = winform.tel.text
  46. var dress = winform.dress.text
  47. var em = winform.emal.text
  48. var qq = winform.qq.text
  49. var mark = winform.mark.text
  50. crreaDb.addData(sqlConnection,name,tel,dress,em,qq,mark)
  51. id = sqlConnection.lastInsertRowid()
  52. var data = sqlConnection.stepQuery("select rowid,* from [tl] where rowid = "+id)
  53. winform.listview.addItem({tostring(data.id);data.name;data.tel;data.dress;data.em;data.qq;data.mark})
  54. }
  55. winform.button3.oncommand = function(id,event){
  56. // 删除
  57. var coun = winform.listview.selIndex
  58. var id = winform.listview.getItemText(coun)
  59. if(id){
  60. crreaDb.delData(sqlConnection,id)
  61. winform.listview.clear()
  62. showData()
  63. winform.listview.selIndex = coun
  64. }
  65. else {
  66. winform.msgbox("请选择要删除的列")
  67. }
  68. }
  69. winform.button2.oncommand = function(id,event){
  70. // 编辑修改
  71. crreaDb.editData(sqlConnection,name,tel,dress,em,qq,mark,id)
  72. }
  73. winform.button4.oncommand = function(id,event){
  74. // 查询
  75. var vv = winform.edit.text
  76. var id = crreaDb.inQuiry(sqlConnection,vv)
  77. winform.listview.clear()
  78. if(id){
  79. for(i=1;#id;1){
  80. 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})
  81. }
  82. }
  83. else {
  84. winform.msgbox("找不到记录")
  85. }
  86. }
  87. winform.edit.wndproc = function(hwnd,message,wParam,lParam){
  88. if( message = 0x202/*_WM_LBUTTONUP*/ ) winform.edit.text = ""
  89. }
  90. winform.listview.onnotify = function(id,code,ptr){
  91. select(code) {
  92. case 0xFFFFFF9B/*_LVN_ITEMCHANGED*/ {
  93. if(winform.listview.selIndex){
  94. var lvw = winform.listview
  95. winform.name.text = lvw.getItemText(lvw.selIndex,2)
  96. winform.tel.text = lvw.getItemText(lvw.selIndex,3)
  97. winform.dress.text = lvw.getItemText(lvw.selIndex,4)
  98. winform.emal.text = lvw.getItemText(lvw.selIndex,5)
  99. winform.qq.text = lvw.getItemText(lvw.selIndex,6)
  100. winform.mark.tex = lvw.getItemText(lvw.selIndex,7)
  101. }
  102. }
  103. }
  104. }
  105. win.loopMessage();
  106. sqlConnection.exec("VACUUM")
  107. sqlConnection.close()
  108. return winform;

  1. namespace crreaDb;
  2. import sqlite;
  3. careaTable = function(db){
  4. if( not db.existsTable("tl") ){
  5. //创建表
  6. db.exec( "create table tl(
  7. name,
  8. tel ,
  9. dress,
  10. em,
  11. qq ,
  12. mark
  13. );"
  14. )
  15. }
  16. }
  17. // 添加数据
  18. addData = function(db,name,tell,dress,em,qq,mark){
  19. var command = db.prepare("insert into [tl] values ( @name,@tel,@dress,@em,@qq,@mark );" )
  20. command.bind.parameterAtNames(
  21. name = name;
  22. tel = tell;
  23. dress = dress;
  24. em = em;
  25. qq = qq;
  26. mark = mark
  27. ).step()
  28. command.finalize()
  29. }
  30. // 删除
  31. delData = function(db,id){
  32. db.exec("DELETE FROM [%s] where rowid=%d;","tl",id)
  33. }
  34. // 修改
  35. editData = function(db,name,tel,dress,em,qq,mark,id){
  36. db.exec("UPDATE [tl] SET name = @name,tel=@te1 ,dress=@dress,em=@em,QQ=@qq,mark=@mark WHERE rowid = @id;",{
  37. name = name;
  38. tel = tel;
  39. dress = dress;
  40. em = em;
  41. qq = qq;
  42. mark = mark;
  43. id = id
  44. });
  45. }
  46. // 模糊查询
  47. inQuiry = function(db,re){
  48. var tab = db.getTable("select rowid,* from [tl] where ifnull(name,'') || ifnull(tel,'') || ifnull(QQ,'') like '%"+ re+ "%'")
  49. return tab
  50. }

人气教程排行