找回密码
 加入
搜索
查看: 2365|回复: 12

[AU3基础] 在数据库搜索关键字,能不能办到,高手们(已解决)

  [复制链接]
发表于 2018-3-22 10:26:00 | 显示全部楼层 |阅读模式
本帖最后由 qsy666888 于 2018-3-23 11:12 编辑

我想在数据库搜索关键字,能够搜索出含有关键字的标题显示出来,是不是要用正则哈,不知道怎么弄了

#NoTrayIcon
#include <GUIListBox.au3>
#Include <GuiListView.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
Opt("TrayIconHide", 1)
Opt('MustDeclareVars', 1)
Opt("GUICloseOnESC", 0)
Global $GUI_Form, $Title, $SQLite_Data_Path, $GUI_ListBox
Global $GUI_Input1, $GUI_Input2, $GUI_Input3, $GUI_Input4, $GUI_Input5
Global $GUI_Button1, $GUI_Button2, $GUI_Button3, $GUI_Button4
Global $Msg, $hQuery, $aRow
Global $Temp, $a, $b, $c
$Title = "SQLite操作实例..."
$SQLite_Data_Path = "SQLite.db"
_SQLite_Startup () ;加载 SQLite.dll
If Not FileExists($SQLite_Data_Path) Then
    SQLCreate()
EndIf
$GUI_Form = GUICreate($Title, 300, 435, -1, -1)
GUISetBkColor(0xECE9D8)  ; will change background color
$GUI_ListBox = GUICtrlCreateListView("", 2, 2, 296, 309, 0x0010)
_GUICtrlListView_AddColumn($GUI_ListBox, "编号", 100, 0)
_GUICtrlListView_AddColumn($GUI_ListBox, "姓名", 80, 1)
_GUICtrlListView_AddColumn($GUI_ListBox, "年龄", 80, 1)
GUICtrlCreateLabel("编号         姓名         年龄", 34, 325, 240, 15)
$GUI_Input1 = GUICtrlCreateInput("", 10, 341, 73, 20)
$GUI_Input2 = GUICtrlCreateInput("", 88, 341, 73, 20)
$GUI_Input3 = GUICtrlCreateInput("", 166, 341, 73, 20)
$GUI_Input4 = GUICtrlCreateInput("", 88, 366, 73, 20)
$GUI_Input5 = GUICtrlCreateInput("", 88, 391, 73, 20)
$GUI_Button1 = GUICtrlCreateButton("读取", 246, 315, 48, 22, 0)
$GUI_Button2 = GUICtrlCreateButton("写入", 246, 340, 48, 22, 0)
$GUI_Button3 = GUICtrlCreateButton("查找", 246, 365, 48, 22, 0)
$GUI_Button4 = GUICtrlCreateButton("删除", 246, 390, 48, 22, 0)
GUICtrlCreateGroup("", 2, 307, 296, 107)
GUICtrlCreateLabel("「江西樟树·仅此一仙·QQ:43848058」制作", 32, 419, 240, 15)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()
While 1
  $Msg = GUIGetMsg()
  Select
   Case $Msg = $GUI_EVENT_CLOSE
             _SQLite_Shutdown () ;卸载 SQLite.dll
    ExitLoop
   Case $Msg = $GUI_Button1
    SQLiteRead()
   Case $Msg = $GUI_Button2
                SQLiteInsert(GUICtrlRead ($GUI_Input1), GUICtrlRead ($GUI_Input2), GUICtrlRead ($GUI_Input3))
                SQLiteRead()
   Case $Msg = $GUI_Button3
                SQLiteSelect(GUICtrlRead ($GUI_Input4))
   Case $Msg = $GUI_Button4
    SQLiteDelete(GUICtrlRead ($GUI_Input5))
                SQLiteRead()
  EndSelect
  
WEnd
Func SQLCreate()
    _SQLite_Open ($SQLite_Data_Path)
    _SQLite_Exec(-1, "Create Table IF NOT Exists TestTable (IDs Text PRIMARY KEY, Name Text, Age Text);")
    _SQLite_Close ()
EndFunc
Func SQLiteRead()
_GUICtrlListView_DeleteAllItems ( GUICtrlGetHandle ($GUI_ListBox) )
    _SQLite_Open ($SQLite_Data_Path)
    _SQLite_Query(-1, "SELECT * FROM TestTable ORDER BY IDs DESC;",$hQuery)
While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
        _GUICtrlListView_AddItem($GUI_ListBox, $aRow[0])
        _GUICtrlListView_AddSubItem($GUI_ListBox, _GUICtrlListView_FindInText($GUI_ListBox, $aRow[0]), $aRow[1], 1)
        _GUICtrlListView_AddSubItem($GUI_ListBox, _GUICtrlListView_FindInText($GUI_ListBox, $aRow[0]), $aRow[2], 2)
    WEnd
    _SQLite_Close ()
EndFunc
Func SQLiteInsert($a, $b, $c)
    _SQLite_Open ($SQLite_Data_Path)
_SQLite_QuerySingleRow(-1, "SELECT IDs FROM TestTable WHERE IDs = '" & $a & "';", $aRow)
    $Temp = $aRow[0]
If $Temp = "" Then
  _SQLite_Exec(-1, "Insert into TestTable (IDs) values ('" & $a & "');")
EndIf
_SQLite_Exec(-1, "UPDATE TestTable SET Name = '" & $b & "' WHERE IDs = '" & $a & "';")
    _SQLite_Exec(-1, "UPDATE TestTable SET Age = '" & $c & "' WHERE IDs = '" & $a & "';")
    _SQLite_Close ()
EndFunc
Func SQLiteSelect($a)
    _SQLite_Open ($SQLite_Data_Path)
_SQLite_QuerySingleRow(-1, "SELECT * FROM TestTable WHERE Name = '" & $a & "';", $aRow)
    $Temp = $aRow[0]
If $Temp = "" Then
  MsgBox(262208, "查找结果...", "数据库中姓名为 [" & $a & "] 的员工记录不存在!")
    Else
  _GUICtrlListView_DeleteAllItems ( GUICtrlGetHandle ($GUI_ListBox) )
        _GUICtrlListView_AddItem($GUI_ListBox, $aRow[0])
        _GUICtrlListView_AddSubItem($GUI_ListBox, _GUICtrlListView_FindInText($GUI_ListBox, $aRow[0]), $aRow[1], 1)
        _GUICtrlListView_AddSubItem($GUI_ListBox, _GUICtrlListView_FindInText($GUI_ListBox, $aRow[0]), $aRow[2], 2)
        MsgBox(262208, "查找结果...", "找到记录: 编号[" & $aRow[0] & "] 姓名[" & $aRow[1] & "] 年龄[" & $aRow[2] & "] !")
EndIf
    _SQLite_Close ()
EndFunc
Func SQLiteDelete($a)
    _SQLite_Open ($SQLite_Data_Path)
    _SQLite_Exec(-1, "DELETE FROM  TestTable WHERE Name = '" & $a & "';")
    _SQLite_Close ()
MsgBox(262208, "删除记录...", "删除数据库中姓名为 [" & $a & "] 的员工记录!")
EndFunc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2018-3-22 11:51:22 | 显示全部楼层
回复 1# qsy666888

請先學習 SQL 語法 LIKE
 楼主| 发表于 2018-3-22 12:12:52 | 显示全部楼层
回复 2# kk_lee69

大侠能否帮我改一下,实在是搞不出来,用字符串也不行
发表于 2018-3-22 13:26:42 | 显示全部楼层
回复 3# qsy666888


   改第 88行  SELECT * FROM TestTable WHERE Name = 的寫法
 楼主| 发表于 2018-3-22 13:49:50 | 显示全部楼层
回复 4# kk_lee69

没有弄得出来
发表于 2018-3-22 16:17:59 | 显示全部楼层
回复 5# qsy666888
單就 【搜索出含有关键字的标题】 這個條件 與 資料庫邏輯

第88行原本是  SELECT * FROM TestTable WHERE Name ='關鍵字'

的意思 應該改為
SELECT * FROM TestTable WHERE Name like '%關鍵字%'   

但是 改完後  程式 可不可以跑  ,系統能否運作   不再我回答的考量之內

樓主應該從基礎打底學起   不是 東拼西湊的  

這樣才不會遇到問題 一變化之後 就不知道如何修改了
 楼主| 发表于 2018-3-22 17:06:07 | 显示全部楼层
回复 6# kk_lee69


  跑不起来,我在网上也查了很多,就是不知道是哪里出了问题,论坛上也没有这方面的
发表于 2018-3-22 17:15:30 | 显示全部楼层
回复 7# qsy666888

那不就得了 ..........你的狀況是  告訴你從哪邊著手 處理  

你覺得麻煩  覺得 不需要學到那邊  因為你的用法很單純  只要幾個簡單功能

但是  要你從頭 開始自己寫  你也不知道如何著手  

所以 分成小區塊功能  找了別人的範例 東改西改的,不能用就上來發問  改成 可以用

然後 最終 你還是會遇到 將這些小區塊合起來的問題,再繼續找人幫忙

..................那這樣 你的案子 就由 別人來寫 不就好了....

網路學習 個人覺得分三種

1. 給魚吃
2. 釣魚給你看  讓你自己學
3. 一步一步的引導你學習自己釣魚

我很願意 做第三種  但是  你似乎 不太願意 學習
 楼主| 发表于 2018-3-22 17:25:29 | 显示全部楼层
回复 8# kk_lee69

只有先想别的路径了,主要不是专业敲盘手
发表于 2018-3-22 18:32:57 | 显示全部楼层
数据不大的话,加密存储吧.
不然,真的只有自己摸索和学习了.
发表于 2018-3-23 10:00:03 | 显示全部楼层
回复 9# qsy666888


    论坛很多例子,我也是下载别人的例子来参考的,慢慢来,有些自己真没思路了再来请教哦·~
 楼主| 发表于 2018-3-23 11:09:42 | 显示全部楼层
本帖最后由 qsy666888 于 2018-3-23 11:11 编辑

回复 8# kk_lee69

谢谢你,非常感谢你提示,模糊查询已经弄好了,正是你说的 like 代码。
 楼主| 发表于 2018-3-23 11:11:39 | 显示全部楼层
回复 11# xyhqqaa

嗯,谢谢,就是我没有底子,环境不饶人哈
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 18:48 , Processed in 0.078568 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表