CでDBに接続しています。
そのDB接続のIDやPWDをINIから取得したいのです。
どのような関数を使ったらよいのでしょうか?
シロートなのでできるだけ分かりやすくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは、honiyonです。



 締め切られてないという事はまだ解決されてないのでしょうか?
 時間にゆとりが出来たので詳しく回答します。

 INIファイルを読み込む関数は、Win32APIで提供されています。
 この関数を用いれば、VBでもCでもやり方は一緒です。

 今回はIDとPasswordを取得したいとの事で、取得は文字列になるので GetPrivateProfileString を使用します。

以下のような c:\hoge.ini があるとします。
-------------------------
[Oracle]
ID=myid
Password=mypassword
[Asscess]
ID=myid
Password=mypassword
-------------------------
 これには OracleとAccessのそれぞれのIDとPasswordが記述されています。
 OracleのPasswordを取得したい場合は以下のようにします。

-------------------------
 LPSTR lpID, lpPassword;
lpID = malloc(255);
lpPassword = malloc(255);

GetPrivateProfileString("Oracle", "ID", "---", lpID, 254, "c:\hoge.ini")

GetPrivateProfileString("Oracle", "Password", "---", lpPassword, 254, "c:\hoge.ini")

-------------------------
 "---" の所は、取得に失敗した際に変数(lpIDやlpPassword)に代入される文字です。

 参考になれば幸いです(..
    • good
    • 0
この回答へのお礼

おお!
こんな回答待ってました!
ほんとにありがとうございました。
GetPrivateProfileString は見つけたのですが、
使い方がよくわからかったのです。
感謝です!!!

お礼日時:2001/08/23 13:18

こんにちは、honiyonです。



 下記を参照してください。

 ◇INI取得/書き込みのサンプル◇
 http://www3.justnet.ne.jp/~takahiro7/api014.html

 ◇その他検索結果◇
 http://www.google.com/search?q=INI+%83Z%83N%83V% …
    • good
    • 0
この回答へのお礼

情報ありがとうございます。
サンプル見せてもらったのですが、これはVBですね。
今はCで作っているので…。
しかし、今後VBで作った時に参考にさせてもらいます。

お礼日時:2001/08/16 15:21

GetPrivateProfileStringを使用します。


MSDNで調べてみてください。

参考
WritePrivateProfileString
GetPrivateProfileInt
GetProfileString
WriteProfileString
GetProfileInt

参考URL:http://www.microsoft.com/JAPAN/developer/library …
    • good
    • 0
この回答へのお礼

ありがとうございます。
まずは調べてみたいと思います。
また何かあったらお答えください!

お礼日時:2001/08/16 15:44

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QWindows+postgreSQL+C言語によるDB接続モジュールの開発環境について

現在、以下の開発環境を構築しています。

OS:Windows XP SP2
データベース:PostgreSQL 8.1.4
C言語コンパイラ:LSI C-86 Ver 3.30
エディタ:CPad for LSI C-86 Version 2.31
libpqライブラリ、ヘッダファイル取得元:
http://www.interwiz.koganei.tokyo.jp/software/PostgreSQL/windows.html

データベースの作成、操作を正常に行えることを確認しています。
また、C言語によるテストモジュール(printf()関数によるHello world等
の文字出力、DB接続処理は無し)の作成が行えることも確認済です。

これらの確認が済んだ後に、以下の手順を行いました。

・取得したlibpqライブラリを
(コンパイラ配置フォルダ配下)\LIB\S
ディレクトリ配下にlibpqdll.libを配置。

・コンパイラの_LCCファイルに-llibpqdllを追記。
(-Lオプションで(コンパイラ配置フォルダ配下)\LIBが
指定されているのを確認済)

・コンパイラの_LCCファイルで、-Iオプションで指定したディレクトリに
postgres_ext.h、libpq-fe.hを配置。


そこで、PQsetdbLogin()関数とPQfinish()関数を用いた
DB接続テスト用ソースコードhoge.cを作成し、エディタ経由でコンパイルをした
ところ、
以下のエラーが発生しました。

(コンパイラ配置フォルダ配下)\LIB/s/libpqdll.lib: Not a library file
hoge.obj(hoge.c): Undefined symbol: PQfinish_
hoge.obj(hoge.c): Undefined symbol: PQsetdbLogin_
(コンパイラ配置フォルダ配下)\LIB/s/libpqdll.lib: Not a library file

エラーの原因は、ライブラリファイルが認識されないことと推測していますが、
何故、認識されないのかが分かりません。

ご教授お願い致します。

現在、以下の開発環境を構築しています。

OS:Windows XP SP2
データベース:PostgreSQL 8.1.4
C言語コンパイラ:LSI C-86 Ver 3.30
エディタ:CPad for LSI C-86 Version 2.31
libpqライブラリ、ヘッダファイル取得元:
http://www.interwiz.koganei.tokyo.jp/software/PostgreSQL/windows.html

データベースの作成、操作を正常に行えることを確認しています。
また、C言語によるテストモジュール(printf()関数によるHello world等
の文字出力、DB接続処理は無し)の作成が行えることも確認済です。
...続きを読む

Aベストアンサー

そもそも不可能です。
libpqdll.lib は Win32用
LSI C-86 は DOS(i8086)用

Qiniファイルのキーと値を取得するにはどうすれば?

こんばんわ、マッイィーです。

毎度のことながらお助けを。

iniファイルのキーと値をとるために必要な関数は
何か教えてください。

その取得したキーと値を配列に格納したいのですが、
いい方法ありませんか?

分かっちゃった!って人、おもいっきり教えてください。

もんどりもっさりに教えてください。

Aベストアンサー

★キーの『値』だけを取得して配列に取得したいのですね。
・szBuff バッファ領域の文字列から=文字を検索して配列に格納すればよい。
 ちなみに配列には文字列でセットしますか?
 それとも整数値に変換した値をセットしますか?
 どっち。
・とりあえず、下にサンプルを載せておくので使い分けて下さい。

サンプル:
TCHAR szBuff[ 32768 ];
LPTSTR lpSeek;
LPTSTR lpFind;
LPTSTR *s[ 100 ]; ←文字列として格納
INT n[ 100 ]; ←整数として格納
INT i = 0; ←カウンタ

GetPrivateProfileSection( TEXT("セクション名"), szBuff, sizeof(szBuff), TEXT("INIファイル名") );

for ( lpSeek = szBuff ; *lpSeek != '\0' ; lpSeek++ ){
 if ( (lpFind = strchr(lpSeek,'=')) != NULL ){ ←=文字を検索
  s[ i ] = lpFind + 1;
  n[ i ] = atol( lpFind + 1 );
  i++;
 }
 while ( *lpSeek != '\0' ){ ←次のキーデータに移動するための処理
  lpSeek++;
 }
}
printf( "max=%d\n", i ); ←i カウンタがそのままキーデータの個数になる。

解説:
・前回のサンプルに文字列や整数値を配列にセットする部分を追加しただけ。
 lpSeek に1つ1つのキーデータの文字列になるので、=文字を strchr 関数で
 検索して=文字の次の1文字目がデータ(値)になります。
・あとは文字列の配列(s)や、整数の配列(n)にセットしているだけです。
 配列の要素数は 100 個にしています。セクション内にいくつのキーデータがあるか
 不明ですので多めに宣言しておくか、最初に個数をカウントしてから malloc 関数で
 確保してからセットして下さい。

最後に:
・ここは 2チャンネルのような掲示板ではありませんよ。
 質問、補足、お礼などの文章をもう少し『品』がある文章にすると読みやすくなります。
 ここの辺も気をつけて下さい。
・以上。今後の参考に!

★キーの『値』だけを取得して配列に取得したいのですね。
・szBuff バッファ領域の文字列から=文字を検索して配列に格納すればよい。
 ちなみに配列には文字列でセットしますか?
 それとも整数値に変換した値をセットしますか?
 どっち。
・とりあえず、下にサンプルを載せておくので使い分けて下さい。

サンプル:
TCHAR szBuff[ 32768 ];
LPTSTR lpSeek;
LPTSTR lpFind;
LPTSTR *s[ 100 ]; ←文字列として格納
INT n[ 100 ]; ←整数として格納
INT i = 0; ←カウンタ

GetPrivateProfileS...続きを読む

QC# sqlserver 2005 vs2005 DB追加時重複ID禁止(2)

こんにちは。標記の件で再度調べています。

ユーザ管理画面編集時に重複したID列を追加禁止としたいのですが、
datasetを使って、回すと件数が多くなったときに時間がかかって
しまうので、SQLCOMMANDを使用使用と思っております。
SQLCOMMANDにはどのような指定を行ったらよいですか。
そこで、処理できますでしょうか?

お願いします。

string userid = textBox1.Text;、
string StrConn = @" ";
SqlConnection cnc = new SqlConnection(StrConn);
cnc.Open();
SqlCommand cmd = new SqlCommand("●", cnc);
cmd.ExecuteNonQuery();
cnc.Close();

こんにちは。標記の件で再度調べています。

ユーザ管理画面編集時に重複したID列を追加禁止としたいのですが、
datasetを使って、回すと件数が多くなったときに時間がかかって
しまうので、SQLCOMMANDを使用使用と思っております。
SQLCOMMANDにはどのような指定を行ったらよいですか。
そこで、処理できますでしょうか?

お願いします。

string userid = textBox1.Text;、
string StrConn = @" ";
SqlConnection cnc = new SqlConnection(StrConn);
...続きを読む

Aベストアンサー

普通は SQL文にて WHERE句を追加して該当行があるのかどうかをチェックするのが妥当な選択かと思われます

別のアプローチとして DataSetに取り込んだDatTableのSelectメソッドで抽出したDataRowコレクションを探索するといった方法でしょう
ただし、DataSetをFillなどで最新状態にしてから実行した方がいいでしょう
データ量が増えた場合Fillする時間がもったいないかもしれませんが

SELECT * FROM テーブル名 WHERE UserID='抽出対象のID'
といったSQL文になると思います

VS.NETのサーバーエクスプローラから クエリを作成して希望するデータの取得をどのようにしたら出来るか確認してみましょう

Qコードの一部を外だしにする方法について C# XML INIファイル イベントビュー

「Windowsのイベントビューから指定日時の0時から終日までのログを
取り出し、メールに送付して送信するバッチツール」を開発したいです。

VS2013を使っています。

そこで
下記のコードを見ていただきたいのですが
「xml形式でイベントビューのログをフィルタリングする処理」を書いています。
この部分を「外だしにしてツールとしての汎用性を高めたい」です。
xmlファイルを外だしにすることはできたのですが
dt.AddDays(-1).ToStringやdt.ToStringなどC#でシステムの時間を入手してますよね?
この部分をパラメータで外だしにしたxmlに渡したいです。
しかし、調べてみても私の基礎知識の乏しさからか目的の処理を施す方法が見つかりません。
xmlschemaを使うだとかXdocumenntを使うだとかXelementを使うだとか
情報は多いのですが
どの方面にフォーカスして調べていけばいいのかわからないのが現状です。
つたない説明で申し訳ないのですがヒントになるようなものでも
なにか教えていただけないでしょうか。
これが質問①です。

//QueryStringを指定する。QueryStringのフォーマットはXML形式で
//指定日付の0時0分0秒から23時59分59秒までのイベントをフィルタリングします。
DateTime dt = DateTime.Now

string queryString="<QueryList>"
+"<Query Id=\"0\" Path=\"System\">"
+ "<Select Path=\"System\">*[System[(Level=1 or Level=2 or Level=3) and TimeCreated[@SystemTime&gt;='"
+dt.AddDays(-1).ToString("yyyy-MM-dd")
+"T15:00:00.000Z' and @SystemTime&lt;='"
+dt.ToString("yyyy-MM-dd")+"T14:59:59.999Z']]]</Select>"
+"</Query>"
+"</QueryList>";

もう一つお聞きしたいことがあります。
それは「取得したログの中から除外ワードを含むものを除外させる処理」
をする際のコードについてです。
INIファイルに除外ワードを用意して
そこから除外ワードを取得してそれを含むログを除外したいのですが
その方法についても調べ途中ではありますが未だ有効な情報を発見し
活用できていません。
INIファイルを使用しなくても上記の処理ができればxmlファイルでも
かまいません
これについても何かヒントを頂ければと思います。
これが質問②です。

もう丸二日探しつ続けていますが
調べても調べてもわからないことに自分自身呆れますし焦ります
その原因として
わかる人にはわかる情報をキャッチできていないことにあるのではと
感じています
検索し、ヒットしている有用な情報に気付けずスルーしている気がします。
知りたいことを自力で調べる力は経験と馴れで身に着けるしかないと
周りにはアドバイスされますが、早く使える人材になりたくて焦ってしまいます。
(私は入社約3か月目の新社会人です)
調べればわかるだろと思われるような質問を忙しく働いている人に
聞くことはしたくありませんし
何事もできるだけ自分の力で解決したいと思っています。
また、システム開発の仕事としては常に調べながら情報を得ながら
この先も進めていくことになるでしょう。
よって、ほしい情報を調べて活用していく技術は必須と考えます。
この技術をはやく身に着けるために
なにかできることはないでしょうか?
これが質問③です。

長くなりましたが、この3つの質問に関して
ご意見・ご回答をよろしくお願いいたします。
また、質問の内容として抜けている情報があれば
補足いたしますのでお教えください。

「Windowsのイベントビューから指定日時の0時から終日までのログを
取り出し、メールに送付して送信するバッチツール」を開発したいです。

VS2013を使っています。

そこで
下記のコードを見ていただきたいのですが
「xml形式でイベントビューのログをフィルタリングする処理」を書いています。
この部分を「外だしにしてツールとしての汎用性を高めたい」です。
xmlファイルを外だしにすることはできたのですが
dt.AddDays(-1).ToStringやdt.ToStringなどC#でシステムの時間を入手してますよね?
こ...続きを読む

Aベストアンサー

大抵の場合、「やりたい事」がそのまま見つかることはありません。
ですから、やりたい事が「自分が知っている方法で」どうやったらできるか、を考えます。
そうして、どうしてもそれだけではできない部分を調べます。

このためには「問題を分析する」ことが大切です。

今回ので言えば、 XMLとかを考えなければ

@SystemTime&gt;='XXXX' and @SystemTime&lt;='ZZZZ'
のXXXXとZZZZを日付の文字列に置き換える

だけです。「文字列の置き換え」なんていくらでも方法が見つかります。
String.Formatの書式で書いて{0}には開始日時が入ると決めておけば、 String.Format(XMLの内容, 開始日時,...)なんて方法が使えます。
いろんな内容を置き換えるものに「テンプレートエンジン」というのもあります。

※ ここで、特定のタグの中だけ変更対象にしたい、という場合に、XMLの構造解析や要素の抽出等を行うのが、XDocument等の使い方です。



(2)も同じように、問題を分割することです。
「INI等に除外ワードを書いて、それを読み込む」
というプログラムは簡単ですよね?
「対象文字列に、検索文字列が含まれているかどうかを調べる」
というプログラムも簡単ですよね?
これらがわかれば
「対象文字列に、『除外ワード』が含まれているかどうか調べる」を全部の除外ワードについて繰り返して、1つでも含まれていたら除外
というプログラムは、簡単なものをちょっと組合せただけの簡単なプログラムになります。



(3)ですが。
勘と経験もあります。
ですが、(1)(2)を考えると「何を探したらいいのか考えないまま、漠然と探している」のではないでしょうか?

大抵の場合、「やりたい事」がそのまま見つかることはありません。
ですから、やりたい事が「自分が知っている方法で」どうやったらできるか、を考えます。
そうして、どうしてもそれだけではできない部分を調べます。

このためには「問題を分析する」ことが大切です。

今回ので言えば、 XMLとかを考えなければ

@SystemTime&gt;='XXXX' and @SystemTime&lt;='ZZZZ'
のXXXXとZZZZを日付の文字列に置き換える

だけです。「文字列の置き換え」なんていくらでも方法が見つかります。
String.Formatの書式で書いて{...続きを読む

QC言語で取得した文字列を、C++の文字列として取り扱いたいです。

C言語で取得した文字列を、C++の文字列として取り扱いたいです。

皆さんこんにちは。

C言語で取得したchar型で定義された文字列を、
C++の「std::string」に渡したいと思っております。
どうすればかなうでしょうか?
具体的には次のような内容です。

■C言語側
----
char key1 = "deperture";
----

■C++側で「key1 = key2」としたいです。
----
std::string key2 = key1;
----

C言語側で記述されている「key1」の値(deperture)を、
C++ソース内の「key2」に渡したいと思っています。

こうゆう場合、どんな方法をとれば適切でしょうか。
C言語側でのchar型の文字列の値を、
C++側の「std::string」型として
C++のソースへ渡す方法が分からないです。

アドバイスいただけるとありがたいです。
簡単な例を頂けると更に大変ありがたいです。

以上どうぞ宜しくお願い致します。

C言語で取得した文字列を、C++の文字列として取り扱いたいです。

皆さんこんにちは。

C言語で取得したchar型で定義された文字列を、
C++の「std::string」に渡したいと思っております。
どうすればかなうでしょうか?
具体的には次のような内容です。

■C言語側
----
char key1 = "deperture";
----

■C++側で「key1 = key2」としたいです。
----
std::string key2 = key1;
----

C言語側で記述されている「key1」の値(deperture)を、
C++ソース内の「key2」に渡したいと思っています。

...続きを読む

Aベストアンサー

> char key1 = "deperture";

本当にこれであっていますか?

char key1[] = "deperture";

ではないですか?
そうだとした場合、C++側では、

extern "C" char key1[];
std::string key2(key1);

とすればよいかと思います。


人気Q&Aランキング

おすすめ情報