![](/img/trans.png)
[英]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.