0

コードが機能しない理由を突き止めようと、頭を悩ませています。アクセスデータベースからのデータで満たされたDataSetから読み取り、以前に作成されたOracleデータベースにデータを挿入しようとしています。次のコードを試してみると機能しません。try と catch ブロックを使用しても、デバッグ時にフリーズしてエラーが表示されません。foreach ループのすぐ上にあるブロックをコメント アウトしたことがわかります。これは完全に機能します。

     private void button3_Click(object sender, EventArgs e)
    {
        string query1 = "Select * from Test;";
        string StrQuery= "Insert Into TEST (ID, DATA) Values (:ID, :DATA)";

        Conn = new OleDbConnection(connStr);
        Conn.Open();
        using (OleDbConnection connection1 = new OleDbConnection(connStr))
        {
            using (OleDbDataAdapter adapter1 = new OleDbDataAdapter(query1, connection1))
            {
                DataSet ds1 = new DataSet();
                adapter1.Fill(ds1);
               // no need for refilling DataGridView1.DataSource = ds.Tables[0]

               // insterting the dataset into oracle
                try
                {
                    using (OracleConnection connect = new OracleConnection(oradb1))
                    {
                        connect.Open();
                        using (OracleCommand comma = new OracleCommand(StrQuery, connect))
                        {


                                /*comma.Parameters.Add(new OracleParameter(":ID", 2));
                                comma.Parameters.Add(new OracleParameter(":DATA", 2));
                                comma.ExecuteNonQuery();*/
                            foreach (DataRow drRow in ds1.Tables[0].Rows)
                            {
                                for (int i = 0; i < ds1.Tables[0].Columns.Count; i++)
                                {
                                    comma.Parameters.Add(new OracleParameter(":ID", drRow[i]));
                                    comma.Parameters.Add(new OracleParameter(":DATA", drRow[i]));
                                    comma.ExecuteNonQuery();
                                }
                            }


                            connect.Close();
                            connect.Dispose();
                        }
                    }

                }

                catch (OracleException)
                {
                    System.Diagnostics.Debugger.Break();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

            }
        }

        Conn.Close();
    }
4

3 に答える 3

1

列をループしていますが、パラメーターの値として drRow[i] を追加しています。これはあなたが意図したものではないと思います。

列のループをスキップし、最初の列の値を id に追加し、2 番目の列の値を data に追加します。それはあなたが望んでいたものでなければなりません....そうでない場合は、もう少し説明してください...

于 2013-07-22T16:12:03.850 に答える