2016-09-07 10 views
1

MySQLテーブルの値をJTableに挿入してこのJTableをプレビューすると、 "BIT"カラムが "1"を私がここに貼り付けることができない奇妙なボックスとして返すことに気付きました。空白として0を返します。MySQLテーブルの奇妙なビット値

enter image description here

+0

符号化/照合の問題である可能性があります – Rahul

答えて

1

BIT列のバイナリデータとしてではなく、「1」または「0」(文字1または0の文字列)として格納ビット、あなた:私は、ビット・エラー表示のスクリーンショット を残しておきますexport_set() functionを使用してビット値を文字列に変換する必要があります。あなたのフィールドは(Mは、ビット・フィールドの長さである)BIT(M)として定義されている場合は、

select export_set(field_name, '1','0','',M) from yourtable 

クエリが連続1と0で、文字列表現でビットフィールドの値を返します。 defaultにより

+0

この問題は、ユーザーが複数の表を見ることを許可していることが原因です。 BIT値が入っている列のフィールド名が異なるテーブル全体で変更される可能性があるので、毎回フィールド名を変更する必要があります。 – Plumel

1

JTableJCheckBoxを使用してタイプBooleanTableModel値をレンダリングします。モデルの実装でisCellEditable()trueを返すことで、セルを編集可能にすることができます(here)。 hereを示すように

また、あなたは

  • getColumnClass()のモデルの実装では、その列のためにお好みのタイプを返します

    することができます。

  • hereのように、カスタムレンダラーを使用します。

+0

ブール値とビットデータ型はMySQLでは同じではありません。ブール値はtinyintのエイリアスにすぎませんが、ビットデータ型はビットフィールドを表します。 – Shadow

+0

@ Shadow:私はこれについてあなたに延期します。私は作者が、既定のレンダラーを図示のように引き出すある種のテーブルモデルアダプターを使用していると思われます。 – trashgod

+0

私が実際に抱いているのは、JTableの行と列をループするコードです。データを保持する変数がボックスと等しい場合、それは1に変わります。 0と同じことをしますが、私はどの文字がこれに使用されているのかわかりません(空白スペースであり、スペースを変更しようとするとうまくいきません) – Plumel