在数据库搜索关键字,能不能办到,高手们(已解决)
本帖最后由 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
回复 1# qsy666888
請先學習 SQL 語法 LIKE 回复 2# kk_lee69
大侠能否帮我改一下,实在是搞不出来,用字符串也不行 回复 3# qsy666888
改第 88行SELECT * FROM TestTable WHERE Name = 的寫法 回复 4# kk_lee69
没有弄得出来 回复 5# qsy666888
單就 【搜索出含有关键字的标题】 這個條件 與 資料庫邏輯
第88行原本是SELECT * FROM TestTable WHERE Name ='關鍵字'
的意思 應該改為
SELECT * FROM TestTable WHERE Name like '%關鍵字%'
但是 改完後程式 可不可以跑,系統能否運作 不再我回答的考量之內
樓主應該從基礎打底學起 不是 東拼西湊的
這樣才不會遇到問題 一變化之後 就不知道如何修改了 回复 6# kk_lee69
跑不起来,我在网上也查了很多,就是不知道是哪里出了问题,论坛上也没有这方面的 回复 7# qsy666888
那不就得了 ..........你的狀況是告訴你從哪邊著手 處理
你覺得麻煩覺得 不需要學到那邊因為你的用法很單純只要幾個簡單功能
但是要你從頭 開始自己寫你也不知道如何著手
所以 分成小區塊功能找了別人的範例 東改西改的,不能用就上來發問改成 可以用
然後 最終 你還是會遇到 將這些小區塊合起來的問題,再繼續找人幫忙
..................那這樣 你的案子 就由 別人來寫 不就好了....
網路學習 個人覺得分三種
1. 給魚吃
2. 釣魚給你看讓你自己學
3. 一步一步的引導你學習自己釣魚
我很願意 做第三種但是你似乎 不太願意 學習 回复 8# kk_lee69
只有先想别的路径了,主要不是专业敲盘手 数据不大的话,加密存储吧.
不然,真的只有自己摸索和学习了. 回复 9# qsy666888
论坛很多例子,我也是下载别人的例子来参考的,慢慢来,有些自己真没思路了再来请教哦·~ 本帖最后由 qsy666888 于 2018-3-23 11:11 编辑
回复 8# kk_lee69
谢谢你,非常感谢你提示,模糊查询已经弄好了,正是你说的 like 代码。 回复 11# xyhqqaa
嗯,谢谢,就是我没有底子,环境不饶人哈
页:
[1]