教えて下さい。
以下のようにC#で記述し、ODBC接続で単純にデータを取得するだけのものですが、
変数に代入する段階でエラーとなってしまいます。
取得項目がたまたまデータが存在しないという事だけですが、データがないからといって
エラーにはならないと思いますが。。。
尚、エラーの内容は、
型 'System.DBNull' のオブジェクトを型 'System.String' にキャストできません。
というエラーです。
初歩的な事で申し訳ありませんが、教えて下さい。
《記述内容》
int mst_cnt = 0;
int cLoop = 0;
string[] A;
string[] B;
string message;
A = null;
B = null;
OdbcConnection cn;
string MyString,Mycnt;
MyString = "SELECT 明細マスタ.A,"
+ "明細マスタ.B,"
+ " FROM 明細マスタ,"
+ "発注明細データ,"
+ "発注データ"
+ " WHERE 発注データ.発注番号 = 発注明細データ.発注番号"
+ " AND 発注明細データ.部品番号 = 明細マスタ.部品番号";
Mycnt = "SELECT COUNT(*) "
+ " FROM 明細マスタ,"
+ "発注明細データ,"
+ "発注データ"
+ " WHERE メカ部品発注データ.発注番号 = メカ部品発注明細データ.発注番号"
+ " WHERE 発注データ.発注番号 = 発注明細データ.発注番号"
+ " AND 発注明細データ.部品番号 = 明細マスタ.部品番号";
cn = new OdbcConnection("Driver={Microsoft ODBC for Oracle};Server=MRDKIKAN;"
+ "UID=MRDKIKAN;PWD=MRDKIKAN");
OdbcCommand cmd = new OdbcCommand(MyString, cn);
OdbcCommand cmdcnt = new OdbcCommand(Mycnt, cn);
cn.Open();
try
{
OdbcDataReader reader = cmdcnt.ExecuteReader();
reader.Read();
mst_cnt = reader.GetInt32(0);
図面番号 = new string[mst_cnt];
部品名 = new string[mst_cnt];
reader.Close();
reader = cmd.ExecuteReader();
while (reader.Read() == true)
{
図面番号[cLoop] = reader.GetString(0);
部品名[cLoop] = reader.GetString(1); ← ここでエラーとなってしまいます!!
cLoop += 1;
}
}
catch (Exception ex)
{
message = ex.Message;
return;
}
//MySQL切断
cn.Close();
No.1ベストアンサー
- 回答日時:
>Conversions are performed based on the underlying capabilities of the ODBC driver. >If the conversion is not supported, the method call fails.
>Call IsDBNull to look for null values before calling this method.
このメソッドを呼ぶ前に、IsDBNullメソッドを呼んでnull値かどうか確認しろ、ってリファレンスに書いてある
#そして、必要があれば分岐するコードを自分でかけ、ってことだと思う
この回答への補足
ご回答ありがとうございます。
教えて頂いたように、IsDBNull関数を使用し、以下のように記述しましたが、
それでもエラーが消えません。。。
エラーの内容は同じです。
何が原因でしょうか???
《記述内容》
if (Convert.IsDBNull(reader.GetString(2)))
{
二次加工[cLoop] = "";
}
else
{
二次加工[cLoop] = reader.GetString(2);
}
教えて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(ネットショッピング・通販・ECサイト) moonwalkbabyで注文されて届いた方いますか? 2 2023/04/12 23:31
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Visual Basic(VBA) エクセルVBA 3 2022/06/23 20:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
合計3TBのデータのハッシュ値を...
-
教えて下さい
-
VBA 空白セルを削除ではない方...
-
多量のSUMIF式を軽くしたい
-
【エクセル】測定時間がバラバ...
-
配列でデータが入っている要素...
-
エクセルで2つの時系列のデー...
-
メモ帳(テキストデータ)をExc...
-
C言語プログラム変更
-
Matlab:plotで特定の値だけをプ...
-
Excelのマクロでワードのテキス...
-
シーケンサにパソコンからアク...
-
VBAを使ってOutlookメール本文...
-
matlabでの標高断面図の作成
-
ウィンドウ枠の固定を行の2箇所...
-
パースとはなんですか?
-
Accessで該当データにフラグを...
-
ビットシフトについて
-
VBA & easycomm で長時間測定の...
-
配列の勉強をしています。使用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
多量のSUMIF式を軽くしたい
-
Excelのマクロでワードのテキス...
-
エクセルで2つの時系列のデー...
-
この行は既に別のテーブルに属...
-
VBAを使ってOutlookメール本文...
-
シーケンサにパソコンからアク...
-
EXCELVBAでSQLserverからデータ...
-
ブレーカー落ちで壊れたりしな...
-
[C言語] コメント文字列を無視...
-
オープンチヤットでデータ削除...
-
モジュラス103の算出方法について
-
javaでDBからデータを取ってき...
-
カンマからスラッシュに
-
VBA 毎日取得するデータを順番...
-
Android携帯をUSBメモリ代わりに
おすすめ情報