[英]Sort by field values from 2 columns - mysql - delphi - dbgrid
[英]Delphi dbgrid is not showing mysql varchar columns
我正在使用delphi XE2并正在处理mysql数据库项目。 我有一个mysql数据库,该数据库的表包含四列。
我在此表中有两个示例行。
我正在使用TDatabase,TQuery,TDatasource和TDBGrid通过以下源代码连接到数据库:
dbgrid1.DataSource :=DataSource1 ;
datasource1.DataSet :=Query1 ;
database1.DatabaseName :='personDatabase';
database1.AliasName :='mysqlodbc';
database1.LoginPrompt :=false;
database1.Connected :=true;
query1.DatabaseName :=database1.DatabaseName;
query1.SQL.Clear;
query1.SQL.Add('select * from persondb.person;');
query1.Active :=true;
问题是当我尝试选择所有列和行(使用select * from persondb.person
)并在dbgrid中显示它们时,没有显示varchar列,而我仅获得了两个int列。
就像varchar列无法显示一样,例如select fname from persondb.person
的sql select fname from persondb.person
将导致select fname from persondb.person
中的两个单单元格行。 结果与使用sql select fname, lname from persondb.person
的结果相同,这甚至不符合逻辑(因为我期望有2X2空表)。
我还将数据库utf8的字符集更改为latin1,并认为问题可能出在那儿,但也没有运气。
我用谷歌搜索了几个小时,甚至没有一个类似的问题。 但是我认为正常的行为是dbgrid将varchar字段显示为(memo)
,每个人都在努力克服。
因此,感谢您的帮助。
几天前发生在我身上。 使用dbExpress或Ado连接而不是BDE并不是一个好主意,因为它需要更多的时间来学习和更改代码。 我使用oracle(也许与mysql类似)。 您应该检查数据库结构。
在Oracle 11中,dbgrid无法显示具有VARCHAR2数据类型和CHAR单位的所有列。 dbgrid仅使用BYTE单元显示数据。 但是在Oracle 9i中,一切都很好。
因此,解决方案是将单位( char
更改为byte
)。 这是oracle的sql语句:
ALTER TABLE USERX.TABLENAME MODIFY (COLUMNNAME VARCHAR2(50 BYTE));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.