線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2710
推到 Plurk!
推到 Facebook!

Delphi5+MySql 用Sql搜尋中文問題

缺席
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-30 18:24:35 IP:118.169.xxx.xxx 訂閱
各位大德,您好!
我用 MySql ODBC 5.1 MySql 版本 5.0.45 Delphi5 ADOquery 來連MySql資料庫
資料 顯示沒問題,但在前端下SQL指令搜尋某一中文, 卻搜不到
如:
edit1.text 輸入值是 '李維'

ADOquery1.close;
ADOquery1.sql.clear;
ADOQuery1.sql.Add('select * from TALBENAME');
ADOquery1.sql.Add('where NAME=:x_name ');
ADOquery1.Parameters.ParamByName('x_name').value:=edit1.text;
ADOquery1.open;


MYSQL相關設定如下:
character_set_client UTF8
character_set_server UTF8
character_set_connection UTF8
collation_connection utf8_general_ci
collation_database big5_chinese_ci
collation_server utf8_general_ci
character_set_database BIG5


資料庫有這筆資料,但卻搜不到,不曉得是何原因
請有經驗的大德不吝指教,謝謝!

frappe
中階會員


發表:88
回覆:114
積分:95
註冊:2008-10-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-02-06 22:21:31 IP:115.82.xxx.xxx 訂閱
你要不要先用SQL-Explore下你的select命令,
如果有資料,就是你的程式有問題
如果沒資料,就是你的資料庫設定的問題
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-02-11 11:10:12 IP:118.169.xxx.xxx 訂閱
謝謝大德的回覆, 在後端用select 搜是 OK的,
但在前端用下列程式碼來搜卻找不到資料, 程式碼如下,應該沒錯, 但不知是何原因搜不到
ADOquery1.close;
ADOquery1.sql.clear;
ADOQuery1.sql.Add('select * from TALBENAME');
ADOquery1.sql.Add('where NAME=:x_name ');
ADOquery1.Parameters.ParamByName('x_name').value:=edit1.text;
ADOquery1.open;

frappe
中階會員


發表:88
回覆:114
積分:95
註冊:2008-10-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-02-11 13:21:16 IP:115.83.xxx.xxx 訂閱
tablename跟where之間是不是少了空格?

===================引 用 joana 文 章===================
謝謝大德的回覆, 在後端用select 搜是 OK的,
但在前端用下列程式碼來搜卻找不到資料, 程式碼如下,應該沒錯, 但不知是何原因搜不到
ADOquery1.close;
ADOquery1.sql.clear;
ADOQuery1.sql.Add('select * from TALBENAME');
ADOquery1.sql.Add('where NAME=:x_name ');
ADOquery1.Parameters.ParamByName('x_name').value:=edit1.text;
ADOquery1.open;

christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-02-12 11:10:34 IP:59.125.xxx.xxx 未訂閱
Try It-->
procedure StrToClipbrd(StrValue: string);
var
S: string;
hMem: THandle;
pMem: PChar;
begin
hMem := GlobalAlloc(GHND or GMEM_SHARE, Length(StrValue) 1);
if hMem <> 0 then
begin
pMem := GlobalLock(hMem);
if pMem <> nil then
begin
StrPCopy(pMem, StrValue);
GlobalUnlock(hMem);
if OpenClipboard(0) then
begin
EmptyClipboard;
SetClipboardData(CF_TEXT, hMem);
CloseClipboard;
end
else
GlobalFree(hMem);
end
else
GlobalFree(hMem)
end;
end;
....
....

ADOQuery1.sql.Text:='select * from TALBENAME';
ADOquery1.sql.Add(Format('where NAME=''%S''',[Edit1.Text]);
StrtoClipBrd(ADOQuery1.SQL.Text);
ADOquery1.Open;

-->您可以將該 SQL 貼到 SQL Explorer 看資料 顯示有沒有問題
===================引 用 joana 文 章===================
謝謝大德的回覆, 在後端用select 搜是 OK的,
但在前端用下列程式碼來搜卻找不到資料, 程式碼如下,應該沒錯, 但不知是何原因搜不到
ADOquery1.close;
ADOquery1.sql.clear;
ADOQuery1.sql.Add('select * from TALBENAME');
ADOquery1.sql.Add('where NAME=:x_name ');
ADOquery1.Parameters.ParamByName('x_name').value:=edit1.text;
ADOquery1.open;


===================引 用 joana 文 章===================
謝謝大德的回覆, 在後端用select 搜是 OK的,
但在前端用下列程式碼來搜卻找不到資料, 程式碼如下,應該沒錯, 但不知是何原因搜不到
ADOquery1.close;
ADOquery1.sql.clear;
ADOQuery1.sql.Add('select * from TALBENAME');
ADOquery1.sql.Add('where NAME=:x_name ');
ADOquery1.Parameters.ParamByName('x_name').value:=edit1.text;
ADOquery1.open;

------
What do we live for if not to make life less difficult for each other?
joana
一般會員


發表:35
回覆:70
積分:21
註冊:2005-09-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-02-15 22:32:18 IP:118.169.xxx.xxx 訂閱
謝謝Christie大德的回覆, 末學笨拙,不知大德這段程式在做什麼,可否請大德
解析一下, 感激不盡!
AndrewK
高階會員


發表:6
回覆:151
積分:161
註冊:2006-10-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-02-16 04:36:39 IP:60.250.xxx.xxx 訂閱
christie 之意為 String To clipboard

你可以試試看把 string 複製到 clipboard
再貼到記事本
查看一下有沒有問題 !!
------
Just Do It
-------------------------
其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
系統時間:2024-11-23 8:11:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!