2017-01-30 5 views
0

私は、特定のデータベース内の値を入れるために使用するINSERT文に続くXLSシートからセル値を表し、それは次のようになりますリスト、作成されました:以下の構文からC#辞書要素にどのようにアクセスできますか?

List<FieldValues> fieldValues = new List<FieldValues>() 
{ 
    new FieldValues(tableFields[0]) { 
     dictionary = new Dictionary<int, string>() 
     { 
      {0, "" }, 
      {1, "" } 
     } 

    }, 
    new FieldValues(tableFields[1]) { 
     dictionary = new Dictionary<int, string>() 
     { 
      {0, "x" }, 
      {1, "x" } 
     } 

    }, 
    new FieldValues(tableFields[2]) { 
     dictionary = new Dictionary<int, string>() 
     { 
      {0, "x" }, 
      {1, "x" } 
     } 

    }, 
    new FieldValues(tableFields[3]) { 
     dictionary = new Dictionary<int, string>() 
     { 
      {0, "Car" }, 
      {1, "Travel" } 
     } 

    }, 
}; 


string createQuery2 = createQuery + "\n INSERT INTO `poi_specs_mgu_ece_1.6` ("; 

for (var i = 0; i < tableFields.Count; i++) 
{ 
    createQuery2 += "\n\t" + tableFields[i].GetFieldDeclaration() + (i == tableFields.Count - 1 ? string.Empty : ","); 
} 
createQuery2 += ")\n VALUES ("; 


for (var i = 0; i < fieldValues.Count; i++) 
{ 

    createQuery2 += "\n\t" + fieldValues[i].dictionary; //+ (i == fieldValues.Count - 1 ? string.Empty : ","); 
} 
createQuery2 += " \n);"; 

Iをそれは(内部値)を返すcreateQuery2を作成する次

System.Collections.Generic.Dictionary 2[System.Int32,System.String] System.Collections.Generic.Dictionary 2 [可能System.Int32、可能System.String] System.Collections.Generic.Dictionary 2[System.Int32,System.String] System.Collections.Generic.Dictionary 2 [システム。 Int32、System.Strin g]

の代わりに値を使用します。 誰かが問題の可視化を助けることができますか?なぜ辞書要素を読むことができないのですか?コードのこの部分で

+0

FieldValuesプロパティ[i]を.dictionaryが辞書であなたがFieldValuesプロパティを使用している場合、あなたは、それだけのToStringメソッドになり[i]が.dictionary [0]あなたはvaueになるだろう。しかし、あなたのコードはSQLインジェクションのために開いているだけで、値を連結するのではなくパラメータを使用しています! –

+1

辞書の2つのキーを表現するものを説明できますか?彼らはフィールドの名前と価値ですか? – Steve

答えて

1

createQuery2 += "\n\t" + fieldValues[i].dictionary; 

それだけで型を返す文字列の中に、あなたのオブジェクトを作成しようとするので、それは、オブジェクトのときは、文字列に辞書を追加しています。

代わりに辞書の値に直接アクセスする必要があります。このよう

createQuery2 += "\n\t" + fieldValues[i].dictionary[0] + fieldValues[i].dictionary[1]; 
+0

それは動作します!どうもありがとう! –

+0

しかし、辞書に特定の行があるかどうかを調べるメソッドを作成したいとします。この新しいFieldValuesプロパティ(tableFields [3]){ 辞書は=新しい辞書() { {0、 "車"}、 {1、 "旅行"} }どのように私は辞書行 –

+0

は申し訳アクセスもできるような何かあなたは私の最後のコメントを無視することができます:それは となるようになっていましたが、辞書に特定の行があるかどうかを調べるメソッドを作成したいとしますか?このようなもの public string GetRowValue(int row) { return string.Empty; } 辞書に特定の行があるかどうかを確認するにはどうすればよいですか? –

関連する問題