2012-03-20 14 views
-3

私はエラーを表示していませんが、DBには何も送信しません。私はそれがComplexStructを認識しないと思います。私はComplexStructで作成されたすべての変数を読み込みたいと思います。 dbにそれらを送信しますが、これはあなたのアイデアを持って動作しません?どのように変数を宣言しますか?構造体をデータベースに送信

これは、全体のコードです:以下で

http://pastebin.com/7cMrVL1k

すべては私のデータベースのテーブル構造が似ている私のデータベースに送信する必要があります、B、C、D、E、F ... ...、AA、AB、AC、AD、AE、...、BA、BB、BCなどアップ

をCZし、それはすべて、この部分で行う必要があります:

http://pastebin.com/2RruRgr8

} 
    private void Main2() 
    { 
     { 
var structure = new { Datavalues = new short[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12   ,13, 14, 15, 16, 17, 18 ,19, 20, 21, 22, 23, 24 ,25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 82, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110 } }; 

var fields = new[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "aa", "ab", "ac", "ad", "ae", "af", "ag", "ah", "ai", "aj", "ak", "al", "am", "an", "ao", "ap", "aq", "ar", "as", "at", "au", "av", "aw", "ax", "ay", "az", "ba", "bb", "bc", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bk", "bl", "bm", "bn", "bo", "bp", "bq", "br", "bs", "bt", "bu", "bv", "bw", "bx", "by", "bz", "ca", "cb", "cc", "cd", "ce", "cf", "cg", "ch", "ci", "cj", "ck", "cl", "cm", "cn", "co", "cp", "cq", "cr", "cs", "ct", "cu", "cv", "cw", "cx", "cy", "cz",}; 

      string cs = @"server=localhost;userid=root; 
     password=flex01;database=gen1"; 


      for (int i = 0; i < 5; i++) 
      { 
       using (var conn = new MySqlConnection(cs)) 
       using (var cmd = conn.CreateCommand()) 
       { 
        conn.Open(); 
        cmd.CommandText = "INSERT INTO actualvalues (" + string.Join(", ", fields) + ") VALUES (" + string.Join(", ", fields.Select(r => "@" + r)) + ")"; 
        for (int i = 0; i < fields.Length; i++) 
         cmd.Parameters.Add("@" + fields[i], SqlDbType.SmallInt).Value = structure.Datavalues[i]; 
       } 
      } 
     } 
    } 

それは以下のエラーを私に与えます:

エラー1 'のSystem.Array' を事前にThxを、私は、誰かがこれは私が今得たものである


うちに私を助けることができる願っています'Select'の定義がなく、 'System.Array'タイプの最初の引数を受け入れる拡張メソッド 'Select'はありません(使用指示文またはアセンブリ参照がありませんか?):

エラー2 'i'という名前のローカル変数は、 'i'とは異なる意味を持つため、他のものを示すために '親または現行'スコープで既に使用されているため、宣言できません。

+2

は逆らうために非常に多くのように思えます。あなたはあなたが持っている問題のはるかに小さな例を特定して投稿できますか? 「それはdbに何も送信しない」よりも少し具体的なことが起こっているはずです。 –

+1

パラメータを間違って使用しています。 [ここを見てください](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx) – Reniuz

+0

@ Reeniuz良い点、私はWinFormsコードの吐き気を打ち、読書を止める。 –

答えて

0

質問が明確ではなく、すべてのコードをpastebinに投稿しないでください。問題があると思われる問題のコード行を追加してください。しかし、私はあなたのコードは、それはかなり正しくはないSQLコマンドを作成する場所を見た。あなたのコマンドは次のようになります。

cmd.CommandText = "INSERT INTO actualvalues (a, b) VALUES (@A, @b)";//add c,d and so on 
cmd.Parameters.Add("@A", SqlDbType.SmallInt); 
cmd.Parameters["@A"].Value = structure.datavalues[0]; 
cmd.Parameters.Add("@b", SqlDbType.SmallInt); 
cmd.Parameters["@b"].Value = structure.datavalues[1]; 
//... add parameters for c,d and so on 

そして、私はすでにSqlCommand.Parameters documentationでコメントを見に投稿されたように、すべてのものがどのように行われるかの例があります。

+0

名前構造体を取得していません現在のコンテキストでexcibleしていません – Touchwise

+0

しかし、パラメータに関するアドバイスのためにthxが今問題を解決します;) – Touchwise

+0

すべてのタフはまだロードされた構造を取得することができません – Touchwise

0

@renuizによると、あなたはParametersを間違って使用しました。

これは私がコードの一部にソリューションを参照してくださいどのような方法である:

// your structure, that you have defined before: 
var structure = new { Datavalues = new short[] { 1, 2, 3, 4, 5, 6, ... } }; 

// put all your fields here. !!must be the same length as structure.Datavalues: 
var fields = new[] { "a", "b", "c", "d", "e", ..., "cz" }; 

cmd.CommandText = "INSERT INTO actualvalues (" + string.Join(", ", fields) + ") VALUES (" + string.Join(", ", fields.Select(r => "@" + r)) + ")"; 
for (int i = 0; i < fields.Length; i++) 
    cmd.Parameters.Add("@" + fields[i], SqlDbType.SmallInt).Value = structure.Datavalues[i]; 
+0

私はこれをデータベース接続などを行う部分に追加する必要がありますか? – Touchwise

+0

@ user1280458。また、すぐに使用できる 'structure'変数が必要です。 – Genius

+0

すぐに使える構造変数をどういう意味ですか? – Touchwise

関連する問題