0

私は delphi XE2 を使用しており、mysql データベース プロジェクトに取り組んでいます。4 つの列で構成されるテーブルを持つ mysql データベースがあります。
ここに画像の説明を入力
このテーブルには 2 つのサンプル行があります。

ここに画像の説明を入力

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 列が表示されず、2 つの int 列しか得られないことです。

ここに画像の説明を入力
varchar 列が表示できないようです。たとえば、SQLselect fname from persondb.personは dbgrid で 2 つの単一セル行になります。select fname, lname from persondb.person結果は、論理的でさえないsqlと同じです(2X2の空のテーブルが予想されたため)。

ここに画像の説明を入力

また、utf8 だったデータベースの文字セットを latin1 に変更しましたが、問題があるのではないかと考えましたが、運もありませんでした。
私は何時間もグーグルで検索しましたが、私のような問題さえありませんでした。(memo)しかし、期待される通常の動作は、誰もが克服しようとしている varchar フィールドを表示する dbgrid であると私は学びました。
どんな助けでも大歓迎です。

4

1 に答える 1

0

それは数日前に私に起こりました。BDE の代わりに dbExpress または Ado 接続を使用することはお勧めできません。コードの学習と変更に時間がかかるためです。私はオラクルを使用しています(おそらくmysqlと同様のケースです)。データベース構造を確認する必要があります。

Oracle 11 では、dbgrid は VARCHAR2 データ型および CHAR 単位のすべての列を表示できません。dbgrid は BYTE 単位でデータを表示するだけです。しかし、Oracle 9i ではすべて問題ありません。

したがって、解決策は単位を (charbyte) 変更することです。oracle の sql ステートメントは次のとおりです。

ALTER TABLE USERX.TABLENAME MODIFY (COLUMNNAME VARCHAR2(50 BYTE));

于 2014-01-20T15:30:16.847 に答える