qsy666888 发表于 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)
      _GUICtrlListView_AddSubItem($GUI_ListBox, _GUICtrlListView_FindInText($GUI_ListBox, $aRow), $aRow, 1)
      _GUICtrlListView_AddSubItem($GUI_ListBox, _GUICtrlListView_FindInText($GUI_ListBox, $aRow), $aRow, 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
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
If $Temp = "" Then
MsgBox(262208, "查找结果...", "数据库中姓名为 [" & $a & "] 的员工记录不存在!")
    Else
_GUICtrlListView_DeleteAllItems ( GUICtrlGetHandle ($GUI_ListBox) )
      _GUICtrlListView_AddItem($GUI_ListBox, $aRow)
      _GUICtrlListView_AddSubItem($GUI_ListBox, _GUICtrlListView_FindInText($GUI_ListBox, $aRow), $aRow, 1)
      _GUICtrlListView_AddSubItem($GUI_ListBox, _GUICtrlListView_FindInText($GUI_ListBox, $aRow), $aRow, 2)
      MsgBox(262208, "查找结果...", "找到记录: 编号[" & $aRow & "] 姓名[" & $aRow & "] 年龄[" & $aRow & "] !")
EndIf
    _SQLite_Close ()
EndFunc
Func SQLiteDelete($a)
    _SQLite_Open ($SQLite_Data_Path)
    _SQLite_Exec(-1, "DELETE FROMTestTable WHERE Name = '" & $a & "';")
    _SQLite_Close ()
MsgBox(262208, "删除记录...", "删除数据库中姓名为 [" & $a & "] 的员工记录!")
EndFunc

kk_lee69 发表于 2018-3-22 11:51:22

回复 1# qsy666888

請先學習 SQL 語法 LIKE

qsy666888 发表于 2018-3-22 12:12:52

回复 2# kk_lee69

大侠能否帮我改一下,实在是搞不出来,用字符串也不行

kk_lee69 发表于 2018-3-22 13:26:42

回复 3# qsy666888


   改第 88行SELECT * FROM TestTable WHERE Name = 的寫法

qsy666888 发表于 2018-3-22 13:49:50

回复 4# kk_lee69

没有弄得出来

kk_lee69 发表于 2018-3-22 16:17:59

回复 5# qsy666888
單就 【搜索出含有关键字的标题】 這個條件 與 資料庫邏輯

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

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

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

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

這樣才不會遇到問題 一變化之後 就不知道如何修改了

qsy666888 发表于 2018-3-22 17:06:07

回复 6# kk_lee69


跑不起来,我在网上也查了很多,就是不知道是哪里出了问题,论坛上也没有这方面的

kk_lee69 发表于 2018-3-22 17:15:30

回复 7# qsy666888

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

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

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

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

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

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

網路學習 個人覺得分三種

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

我很願意 做第三種但是你似乎 不太願意 學習

qsy666888 发表于 2018-3-22 17:25:29

回复 8# kk_lee69

只有先想别的路径了,主要不是专业敲盘手

Alam 发表于 2018-3-22 18:32:57

数据不大的话,加密存储吧.
不然,真的只有自己摸索和学习了.

xyhqqaa 发表于 2018-3-23 10:00:03

回复 9# qsy666888


    论坛很多例子,我也是下载别人的例子来参考的,慢慢来,有些自己真没思路了再来请教哦·~

qsy666888 发表于 2018-3-23 11:09:42

本帖最后由 qsy666888 于 2018-3-23 11:11 编辑

回复 8# kk_lee69

谢谢你,非常感谢你提示,模糊查询已经弄好了,正是你说的 like 代码。

qsy666888 发表于 2018-3-23 11:11:39

回复 11# xyhqqaa

嗯,谢谢,就是我没有底子,环境不饶人哈
页: [1]
查看完整版本: 在数据库搜索关键字,能不能办到,高手们(已解决)