我相使用Delphi来显示SQL上的nchar,nvarchar字段, 因为我的用户还是用win98. Delphi应该是用Twidestring来显示那些字段, 所以我可以用程式把那些WideString转回平时的String(可以GB 或 Big5码互换). 可是我曾经试过用BDE, DbExpress, ODBCExpress等, 他们都把所有中文字都显示为????. 我发觉其原因是Delphi上的工具都把那些nvarchar, nchar字段都以Tstring把处理.其中只有当我是用ADO, 他才会用TWideString. 可是若我要提取大量数据时ADO
却是非常慢, 所以我想用其他的控件来连.不知道各路高手有何高见. 或者更直接的方法.
却是非常慢, 所以我想用其他的控件来连.不知道各路高手有何高见. 或者更直接的方法.
论坛中以前有许多人问这样的问题,搜索一下,或许可以找到答案。
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
var myDoubleByte :String;
myunicode :WideString;
...
myDoubleByte := WideStringToStringEx(myUnicode, 936);
...很是方便的.问题是当我试用 BDE, DbExpress, ODBCExpress, ... 来连 MS SQL, 其 Query1.FieldValue['MyUnicode'] 都是预先转为 Ansi string, 并显示为 '?????'.
唯有用ADO, 他的ADODataSet1.FieldValue['MyUnicde']才是WideString, 我才可以做转换. 可是ADO速度较其他都为慢.
我初步测试比较, ADO only 25rows/sec while BDE, DbExpress can read up to 800 rows/sec. 我其中一个数据表都有200,000条, 用ADO很花时间. 我好希望用其他较快的来连.
不知道你们有何高见.