• 締切済み

JDBC(ODBC)からACCESS接続による全角文字取得について

ACCESSの1項目のフィールドサイズをテキスト型でサイズ20で定義し、Java側からexecuteQuery(sql)でデータを取得すると、全角文字10文字しか取得できません。 全角文字はダブルバイトなのでサイズ20の半分になるのは理解できるのですが、ACCESS側では、サイズ20のときに全角20文字を入力することができます。その不一致を解消するために、サイズを40にして、ACCESS側で入力を20文字までに制御する方法しかないのでしょうか?

みんなの回答

noname#22222
noname#22222
回答No.1

ACCESS側では、サイズ20のときに全角20文字を入力することができます。 全角文字だけならば文字数を10に制限できれば都合が良いと思っています。 その不一致を解消するために、ACCESS側で入力を20バイトに制御する方法しかないのでしょうか? との質問ではないのですか? ※なお、当方は、単なるスーツのデザイナーですので答えそのものは判りません。

mkomiya
質問者

補足

20バイトにすることです。半角、全角が混合しても20バイトで制限したいのです。40バイトのエリアを作り、入力された文字のバイト数をPGでチェックするしかないのかな?

関連するQ&A

  • SQLiteでの全角文字

    SQLiteで作ったテーブルで、データ型をcharで指定したフィールドに全角文字を代入すると、.headerをonにして、.modeでcolumnを指定したときのselect文での表示がずれてしまいます。 具体的には、全角文字を代入したフィールドの次のフィールドがずれて表示されるのです(画像参照)。 単に表示する上での問題なので、実質的な問題にはならないのですが、他人にSQLを教えるために使いたいと思っているので、できればきちんと表示させたいと思っています。 何かいい対処法はありますでしょうか。

  • 文字列の取得について

    Accessのモジュールを使ってある文字列から指定した文字数の文字列を取得しようとしています。 A:"あああああ" & vbcrlf B:"いいいいい" & vbcrlf C:"うううううう" & vbcrlf D:"えええええ" & vbcrlf A~Dまでフィールドがあり、vbcrlfは改行です。 この文字列に対して以下の処理を実行します。 (1)変数mojiにA & B & C & Dを代入 (2)mojiを全角に変換 (3)Left(moji,20)で左から20文字取得します。 (4)mojiをテキストボックスに登録します。 (5)入力チェック処理  ・フィールドサイズが20文字以内か?  ・全角で登録されているか? →登録後のイメージ ---------------- あああああ いいいいい ううううう ---------------- テキストボックスには全角でしっかり登録されているようにみえるのですが、 どうしても全角で登録してくださいというメッセージが表示されてしまいます。 うううううの次の改行を削除すると、メッセージはでなくなります。 この改行が半角になっているのでしょうか? アドバイスよろしくお願いいたします。

  • クエリーで、全角混じりデータの抽出[access95]

    半角で入力すべきフィールドの中に全角文字が混在している時に、 この全角文字が混在しているデータを、クエリーで抽出する方法を 教えてください。 データ型はテキストで、フィールド長は50です。 また入力されているデータは、任意<50文字とないっています。

  • JDBC-ODBC-MDB(日本語テーブル・カラム名)アクセスで、ODBC -1305エラー

    日本語のテーブル名・カラム名を使用したAccess(2000) mdb に JSPおよびServletからJDBC(ODBC経由)でアクセスすると、 SQL実行[executeQuery()]時に下記のエラーが発生します。 getMessage(): [Microsoft][ODBC Microsoft Access Driver] getErrorCode(): -1305 getSQLState(): S0002 ただし、 1.Javaアプリケーションから直接JDBC(ODBC経由)でアクセスすると正常に動作します(ResultSet取得)。 2.JSP・サーブレットからのアクセスでも、   2-1.テーブル名・カラム名がascii文字のテーブルの場合   2-2.テーブル名・カラム名が日本語でも、SQLで使わない場合      例:SELECT now()   の場合は、 正常に動作します(ResultSet取得)。 JSP Servletは   contentType="text/html; charset=Windows-31J"   pageEncoding="windows-31j" で、保存形式は 日本語Shift_JISです。 出力画面表示に文字化けはありません。 作業環境はノートPC1台で、  Tomcat: 5.5.27 JDK/JRE : 1.6.0_07  Eclipse: 3.4.2  OS:Vista Ultimate SP1  ODBCデータソース:システムDNS Microsoft Access Driver(*.mdb) 6.00.6001.18000 ODBCJT32.DLL です。 諸兄のお知恵を拝借お願いします。 ※エラーコードの内容は? ※どのあたりを調べればよいか? ========================= Servletの場合のStackTraceなど -- getMessage:[Microsoft][ODBC Microsoft Access Driver] getErrorCode:-1305 getSQLState:S0002 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) ========================= JSPの場合のStackTraceなど -- getMessage:[Microsoft][ODBC Microsoft Access Driver] getErrorCode:-1305 getSQLState:S0002 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) at org.apache.jsp.TestODBC_jsp._jspService(TestODBC_jsp.java:95) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

  • 【超基礎】全角文字数とバイト数の数え方

    氏名を格納するmynameという項目があるとします。ここには 全角10文字まではOK、全角11文字以上ダメ、 という文字数制約を設けたいと思います。 MySQL側: myname varchar(20) なフィールドをテーブルに作成し、 PHP側: if (strlen($myname) > 20) { echo "全角10文字までにしてください"; } としました。 HTML側で、 「小泉純一郎」と入れたら、全角6文字なのに 「全角10文字までにしてください」と出てしまいます。 全角10文字まではOK、全角11文字以上ダメ、 とするには、 MySQL側:varchar(20) PHP側:> 20 の数字をいくつにすればいいですか。 全角は2バイトだと思ってたのですが。

    • ベストアンサー
    • PHP
  • StatementクラスのexecuteQueryメソッドを使用したSQLの発行について

    StatementクラスのexecuteQueryメソッドを使用したSQLの発行について教えてください。 JavaでMySQLのデータベースからデータを取得するため、 executeQueryメソッドを使用してSQLの発行を行ったのですが、select文が正常に実行されずに困っています。(where句の条件が引っかからずに困っています。) 【前提】 ・カラム「name」の値に「name(nameという文字)」が入っている状態。 ・INT型、CHAR型で定義されたカラムの値は取得できる ・VARCHAR型で定義された、カラムの値が取得できない 【状況】  VARCHAR型で定義された、カラムの値が取得できない場合というのが、java側で、  stmt.executeQuery("SELECT * from customer where name='name'") というようにSQL文を発行した場合です。  MySQLのコマンドプロンプトからダイレクトに投げた場合や、  またDBViewerを使用した場合は、Where句の「name='name'」で引っかかったデータが正常に返ってくるのですが、  Javaから発行した場合のみ「VARCHAR型で定義されているカラムの値が取れない」という状況なのです。  (考えられることとしては、SQL発行時「SELECT * from customer where name='name'」 の 「'name'」が、別の何かに変わっているのかな?(文字コードなどが関係しているのか?)など考えているのですが、解決できず困っております。)   一体どこに問題があるのでしょうか?   (CHAR型、INT型のデータは正常にJava側で読めるのに、VARCHAR型の値をwhere句にした場合に限って、正常にデータ抽出できない、という点が腑に落ちないのですが・・・ SQLエラーを吐く訳ではなく、抽出条件が成立していない形なのです)   【実行環境】 ・Windows XP Pro ・eclipse3.4(all in one eclipse) ・Java1.6 ・TomCat6.0 ・MySQL5.0 (文字コード:UTF-8)

    • ベストアンサー
    • Java
  • キーボードから入力された全角文字列(変換中、確定後)の取得方法

    JTextFieldの機能を自作しようとしています。 入力された半角文字は、getKeyChar()で取得できたのですが、このままgetKeyChar()を使うと、一文字の全角文字なら取得できますが、確定後の全角文字列は最後の1文字しか取得できません。 そこでいろいろ調べていると、変換中や確定後の文字列を取得するには、InputMethod関連を使うと良いようなのですが、実装の仕方がよく分かりません。 どのように記述すれば文字列を取得できるのでしょうか。

    • ベストアンサー
    • Java
  • SQL ServerへのODBC接続

    Excelの「外部データの取り込み」により、SQLサーバー内のデータベースよりデータを取得しようとしています。 新しいデータソースの登録のステップで、データソースの種類「Microsoft SQL Server」を選択して、次のポップアップウィンドウでサーバー名と認証IDを入力。そうすると接続可能なDBが「使用するデータが含まれているデータベースを選択」のテキストの下のドロップダウンリスト中に現れるのですが、サーバー側で(local)の中に登録されているDBしか現れず、ユーザ側で定義されたインスタンス(と呼んでいいんでしたっけ?)の中のDBのテーブルを読みに行くことができません。 どのようにすれば、ユーザ側で定義されたインスタンスの中のDBのテーブルを読みに行くことができるようになるのか、ご教示いただけると有り難く思います。宜しくお願い致します。

  • Access textboxの大きさを、文字数に合わせたい

    こんにちわ。 Accessについての質問なのですが、フィールドから入力された文字数 によってレポート上のテキストボックスの幅を変えたいのですがどの ようにすればよいでしょうか。 多分VBAで制御するものだと思うのですが、検索しても、テキストボッ クスの大きさに合わせて、フォントサイズを縮小したり拡大したりす る・・・といった内容は見つかるのですが、私の求めているものは 見当たりませんでした。 知っている方がおられましたら、是非よろしくお願いします。

  • Accessのフィールドサイズ

    Access2000を使用していますが、テーブル作成時に 「テキスト型」でフィールドサイズを「10」に設定して データを入力すると、半角でも全角でも「10桁」までの入力に なりますが、フィールドサイズは半角も全角も関係ないのでしょうか? 「テキスト型」の最大フィールドサイズは「半角255文字」と 思っていたのですが、全角でも255文字入力できました。