C言語でアクセスデータベースのメモ型の読み書き方法を知りたい

このQ&Aのポイント
  • C言語において、アクセスデータベースのメモ型の読み書き方法について教えてください。
  • C言語でアクセスデータベースにメモ型のデータを書き込む際に、どのフィールド形式指定を使用すれば良いのか知りたいです。
  • C言語でアクセスデータベースにメモ型のデータを書き込んだ後、読み込み時に失敗する理由を教えてください。
回答を見る
  • ベストアンサー

C言語でアクセスデータベースのメモ型の読み書きをしたい。

データベース初心者です。C言語(C++)でアクセスデータベースの読み書きをしていますが、メモ型の読み書き方法が判りません。アドバイスをお願いします。 アクセス方法は、ODBC-APIを使用して <書き込み時> SQLPrepare SQLBindParameter SQLExecute <読み込み時> SQLExecDirect SQLBindCol SQLFetch の手順で行っています。 教えて欲しい内容 1.メモ型の場合、BIND時のフィールド形式指定は、何を使用するのでしょうか? 2.フィールド指定をSQL_C_CHARとして、書き込みを行うと1000文字以上に書き込むこと出来ているようですが、読み込み時に失敗します。アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1です。 調べてみると、ODBC-APIはC言語用のライブラリで、機能がかなり限定されてますね。 「SQLGetDataは、SQL_LONGVARCHARやSQL_LONGVARBINARYのようなデータ型を使用している場合には必須です。」 とあるので、SQL_LONGVARCHARを指定すれば良さそうです。 参考文献は アスキー出版局 Microsoft Press 1998年1月11日発行 Visual Basic によるSQL Server データアクセスガイド

yarazu
質問者

お礼

ありがとうございました。「GetChunk」をキーとして色々調べることができ、メモ型を読むことが出来ました。前回補足で『SQLExecDirectの時点で・・・』と記述しましたが別のエラーで「SQLExecDirect」「SQLGetData」の順で問題なく動作しました。

その他の回答 (1)

回答No.1

ODBCでメモ型フィールドの値を取得する場合、 GetChunkメソッドを使用します。 (データサイズが小さければ普通のフィールドと同じ読み方でもOKです) VBのサンプルはすぐ見つかるのですがC言語のサンプルが見つかりません。 ODBC-APIのヘルプのヘルプに何か書いてないでしょうか?

yarazu
質問者

補足

回答ありがとうございます。GetChunkは、初めて耳にしました。ヘルプの見方が悪いのかうまく検索できません。SQLExecDirectの時点で、エラーとなるため、SQLGetDataを呼ぶことも出来ません。

関連するQ&A

  • ACCESSデータベースのメモ型フィールドの文字数制限について

    ACCESSデータベースのメモ型フィールドの文字数制限について VB6から、MDBメモ型フィールドにINSERT/UPDATEすると、1000バイトしか登録できません。 ACCESSのバージョンは、97です。 MDBを開いて、手で、メモ型フィールドを更新すると、1000バイト以上、登録できます。 10,000バイトほどのデータを登録したいのですが、どこを確認すればいいのでしょうか。 よろしくお願いします。

  • ODBCを使い外部データベースとリンクして値を参照しているAccess

    ODBCを使い外部データベースとリンクして値を参照しているAccessアプリケーションを使おうと思っています。 ところが、アプリケーションを終了した後、Excelのデータベースクエリーを使うと、パスワードキャッシュが働いてしまうのか、パスワードの認証がスキップされるために、どんなデータもダウンロードし放題ということに気づきました。 DNSを使用せずにODBCの接続文字列を指定してパススルークエリーを使おうと思ったのですが、接続するデータベースが2種類あると接続ができないようなので、リンクの方法を取らざるを得ないようです。 ODBCドライバ、もしくはデータベースのアカウントのアクセス権の与え方で解決できうる問題なのかもしれませんが、ODBC専用のアカウントを使用しています。 ODBCのパスワードキャッシュをクリアする方法は有るのでしょうか? ちなみにデータベースはMySQLとDB2です。 何らかアドバイス頂ければ幸いです。

  • Unix(AIX)サーバーで、ASPコードを使用してのMS Accessのデータベースを読み書きなどするのは可能でしょうか?

    MS Accessのデータベースを使用して、ASPコードでそのデータを読み書き編集したりできるようなオンライン・アプリケーションのページを作成したのですが、サーバーがUnix(AIX)だと作成終了時に知りました。 Unix(AIX)上でASPコードを使用してのMS Accessのデータベースを読み書き出来る方法をどなたか知っている方いましたら教えてください。

  • なぜ「アクセス」なんですか?

    WWWからデータベースへアクセスするjavaプログラム作成時によく「MS ACCESS」を使用するのはなぜなんですか?JDBCで直接データベースへアクセスできるようなデータベースがあればわざわざODBCを使用しJDBC-ODBC bridgeで橋渡しをしなくてもJDBCだけでできるんではないですか?また直接アクセスできるデータベースがない等の問題点があるのですか?教えてください.よくわからないのでお願いします.(質問が的はずれだったらすみません.まだ勉強がたりないもので...)

  • Cでデータベースにアクセスするためのプログラム??

    こんにちわ, 現在Cを勉強しています。で今データベースにアクセスするプログラムを勉強したいのですが,なにかおすすめのホームページやアドバイスはありませんか? ありましたらどんなことでもいいので教えてください。 ちなみにデータベースにははじめはAccessを考えていますが,Oracleもその次にトライしてみようと思っています。 よろしくお願いします。

  • JDBC対応のデータベース?

    JAVAアプレット(JDK1.2)でデータベース(MS ACCESS97)へアクセスする場合 JAVAでのデータベースアクセスにはJDBCを使用し, MS ACCESSに対してはODBCを使用し, 橋渡しとしてJDBC-ODBC BRIDGEドライバを使用する方法が本でよくとられているように僕は解釈しています。(違うかもしれませんが...) しかし,MS ACCESS以外のデータベースでJDBCだけでアクセスしSQLをできるようなデータベースはあるのですか? あるのならそちらのほうがいいのではないのでしょうか? という質問でした。

  • access2010でメモ型がインポートできない

    以前のACCESS2000では出来ていたのですが、ACCESS2010(windows7)にバージョンアップしたところ、csvファイルのインポートで、メモ型のデータが255文字までしかインポートできなくなりました。 調べてみたところ、そのフィールドを、クエリなどで使用しているとキャスト(型変換)されるのでメモ型ではなくなり255文字の制限がかかる、との記述がありましたが、新しいテーブルを作成してインポートしてもできませんでしたので、別の原因かと思われます。 また、ACCESS2000のデータを、ACCESS2010の[ファイル]-[保存して発行]・・・・も行い、拡張子を.accdbにしてみましたが、やはり255文字を超えるインポートができませんでした。 インポート時の[設定]のところのフィールドの情報で、メモ型にしてあるフィールド名が表示されていないのが気になりますが。 文字列の引用符は ” にしています。 ACCESSはデータの25行目までを読み込んでデータ型を自動選択している、という記述もあり、1行目のデータに256以上の文字を入れてインポートもして見ましたが255文字で切られてしまいます。 よろしくお願いいたします。

  • htmlタグを含んだ文字のデータベースへの読み書き

    PHPで、「htmlタグを含んだ文字」を、 データベースへ読み書きする安全な方法を教えて下さい。 リンクタグや、フォントタグなどは、 そのまま使用できるようにしたいです。 ■追加する時 htmlフォームからデータベースに保存(SQLインジェクション) ■編集する時 データベースからデータを読み出す(htmlエスケープ) htmlフォームで再編集し、データベースに保存(SQLインジェクション) こういう作業になるかと思いますが、 どのように処理したら、htmlタグを使いつつ、 安全に更新ができるでしょうか? 教えてくださいm(_ _)m

    • ベストアンサー
    • MySQL
  • アクセスでメモ型の長文をテキスト型へ格納できますか

    VB2008を用いて簡単な帳票ソフトをよく作っております。データベースはアクセスを利用し、テキストファイルはテキスト型へ格納しております。最近、過去に使用されていたデータベースを現在のソフトでも利用できるよう依頼されました。それは、テキストファイルが「メモ型」にて長文保存されているリレーショナルDBです。そこで質問なのですが、メモ型の長文を指定したバイト単位で切り分けて順次、テキスト型へ保存する良い方法(コード)はどのようなものがあるでしょうか? LenBや配列を用いて試してみましたがうまくいきません。どなたかアドバイスお願い致します!

  • 構造体の中身をデータベースにコピーする方法がわかりません。

     タイトルにも書いてありますが、 構造体の中身をmysqlで作成したデータベースに 書き込んでいく方法がわからなく、困っております。  PHPやODBCはまったく使い方がわからないので、 C言語のみでアクセスする方法をググってみたところ、 c apiというものがあることはわかりました。 しかし、capiを使ったサンプル自体が極端に少なく、 サンプルの内容もデータベースにアクセスして、テーブル内の 内容を表示するというものがほとんどでした。  変数の値をデータベースに書き込む、というだけのサンプルだけでもいいので、どなたか教えてくださればありがたいです。  もしくは、構造体の中身はcsvファイルとしてすべて書き出しているんですが、このcsvファイルをmysqlで直接読み込んでいったほうが早いのでしょうか?  よろしくお願いいたします。