簡體   English   中英

Delphi dbgrid沒有顯示mysql varchar列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM