sxc:=trim(CB_search.Text);
strsql:='select 信息内容 from 信息表 ';
ADOQserch.Close;
ADOQserch.SQL.Clear;
ADOQserch.SQL.Add(strsql);
ADOQserch.open;
上面就没有问题?
这样的就有问题
strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';
非常差异 ?
如果这样 也可以
strsql:='select top 10 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';
如果这样 就不可以了
strsql:='select top 100 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';
strsql:='select 信息内容 from 信息表 ';
ADOQserch.Close;
ADOQserch.SQL.Clear;
ADOQserch.SQL.Add(strsql);
ADOQserch.open;
上面就没有问题?
这样的就有问题
strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';
非常差异 ?
如果这样 也可以
strsql:='select top 10 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';
如果这样 就不可以了
strsql:='select top 100 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';
500輠寁枉鐉糁?丠洰枦鐉糁?
@nE&J>这样的乱吗 怎么样判断他不是正常显示的,然后抛弃他,该怎样做
ADOQserch.SQL.Clear;
ADOQserch.SQL.Add(strsql);
ADOQserch.open;
没有等你 移动记录指针呢
到 ADOQserch.open; 就提示 "内存益出"了啊
strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';ADOQserch.Close;
ADOQserch.SQL.Clear;
ADOQserch.SQL.Add(strsql);
ADOQserch.open;
到 ADOQserch.open; 就提示 "内存益出"了
乱吗少的时候吧就没有这个问题,也不知道到底是为什么?如果strsql:='select 信息内容 from 信息表 ';这样写 里面乱吗在多 也没有问题???????????我使用的是access数据库 这个问题看来的归于 delphi 的ado 的问题了
和acess没有任何关系 和乱吗 也应该没有关系的
下面是我使用vb做的语句 ,他就没有问题
Dim strsql As String
Set zc = New ADODB.Recordset
strsql = "select tyu from 信息表 where tyu like '%" + Trim(CB_search.Text) + "%'"
zc.Open strsql, conn, 3, 3
Set DataGrid1.DataSource = zc
诧异???????????
strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';ADOQserch.Close;
ADOQserch.SQL.Clear;
ADOQserch.SQL.Add(strsql);
ADOQserch.open;
到 ADOQserch.open; 就提示 "内存益出"了
static string[] strJArray={"ゴ","ガ","ギ","グ","ゲ","ザ","ジ","ズ","ヅ","デ","ド","ポ","ベ","プ","ビ","パ","ヴ","ボ","ペ","ブ","ピ","バ","ヂ","ダ","ゾ","ゼ"};
你可以自己将数据进行base64/UTF8编码,也可以仅对这几个字符进行自定义编码来节省存储空间。
我的自定义编码函数
static string[] strEArray={"Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;"};
//用于绕过Access片假名查询内存溢出BUG的编码函数
static public string JEncode(string strToEncode)
{
for(int i=0;i<strJArray.Length;i++)
{
strToEncode.Replace(strJArray[i],strEArray[i]);
}
return strToEncode;
}
//用于绕过Access片假名查询内存溢出BUG的解码函数
static public string JDecode(string strToDecode)
{
for(int i=0;i<strJArray.Length;i++)
{
strToDecode=strToDecode.Replace(strEArray[i],strJArray[i]);
}
return strToDecode;
}
to jiangsheng 你的这个我的整理成 delphi 的测试一下 在给结果谢谢二位了
You need to encode all data in 信息表.信息内容.
什么意思。我的数据 在 “信息表“里面的 ”信息内容“这个字段里面我在总结一下我的测试结果::::::
我使用的是access数据库
1:这些不是繁体 字 ,我是通过 一个机器接收近来信息,这个机器 有的时候信号不好 就有这样的乱吗,乱吗少 不影响什么 ,一多了 就导致迷糊查询出现“内存益出”的现象
strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';ADOQserch.Close;
ADOQserch.SQL.Clear;
ADOQserch.SQL.Add(strsql);
ADOQserch.open;
到 ADOQserch.open; 就提示 "内存益出"了
2:乱吗少的时候吧就没有这个问题,也不知道到底是为什么?3:如果strsql:='select 信息内容 from 信息表 ';这样写 里面乱吗在多 也没有问题???????????这个问题看来的归于 delphi 的ado 的问题了
和acess没有任何关系 和乱吗 也应该没有关系的
4:下面是我使用vb做的语句 ,他就没有问题
Dim strsql As String
Set zc = New ADODB.Recordset
strsql = "select tyu from 信息表 where tyu like '%" + Trim(CB_search.Text) + "%'"
zc.Open strsql, conn, 3, 3
Set DataGrid1.DataSource = zc
诧异???????????
5:使用delphi的话在strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')'; 在系统为”2000“或者”xp “下面就会“益出”,在”98“下面执行,就没有这个问题
6:字段名 有的说更改成”字母“的 ,我也更改了 ,还是一个样
记录一多,like就有问题了所以我在进行全文检索的时候,只有开个线程一条一条的检索并显示出来
请问 你是怎样检索的呢
strsql:='select 信息内容 from 信息表 where (信息内容 like ''%'+trim(CB_search.Text)+'%'')';ADOQserch.Close;
ADOQserch.SQL.Clear;
ADOQserch.SQL.Add(strsql);
ADOQserch.open;
这样写 ,还没有等你"一条一条的检索"
到 ADOQserch.open; 就提示 "内存益出"了
没有考虑去编码,那样数据库会增大三倍左右 什么意思?