1

私はできる限り検索しましたが、私を助けるものは何も見つかりません。だから私が持っているのは、.txtファイルからいくつかの配列にデータを読み取り/分割して保存するスクリプトです。(ここにリストされているのは Vndnbr です)。私が問題を抱えているのは、配列の各エントリを MS Access テーブルの列の下のエントリとして入力する方法です。これは私がこれまでに持っているものです:

public void AddToDatabase()
{
    OleDbCommand command;
    OleDbConnection connection =
        new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;" +
                            "Data Source=filepath");
    foreach (string x in Vndnbr)
    {
        cmdstringVND[k] = "insert into Table1 (Vndnbr) Values (x)";
        k++;
        command = OleDbCommand(cmdstringVND[k],connection);
    }

    command.Parameters.AddWithValue("?", ReadFromFile("filepath"));
    connection.Open();
    command.ExecuteNonQuery();
    connection.Close();
}

Access ライブラリや、AddwithValue の最初のパラメーターに何を挿入する必要があるかについてはよくわかりません。調査を行った後にこれらの行をコピーして貼り付けただけです。誰かが配列からすべてのデータをテーブルに追加する方法を手伝ってくれたら、大歓迎です、ありがとう。

4

2 に答える 2

3

コードに多くのエラーがあります

  • ループでは、挿入する値を格納するためにパラメーターを使用しません
  • コマンドを作成することはありません。(新品を使用)
  • ExecuteNonQuery がループの外側にあるため、最後のコマンドだけを実行しようとします。

    public void AddToDatabase()
    {
        string cmdText = "insert into Table1 (Vndnbr) Values (?)";
        using(OleDbConnection connection = new OleDbConnection(.....))
        using(OleDbCommand command = new OleDbCommand(cmdText, connection))
        {
            connection.Open();
            command.Parameters.AddWithValue("@p1", "");
            foreach (string x in Vndnbr)
            {
                 command.Parameters["@p1"].Value = x;
                 command.ExecuteNonQuery();
    
            }
        }
    }
    

接続とコマンドを正しく閉じて破棄するために using ステートメントを含めるようにコードを変更し、ループの外側でコマンドを初期化し、共通の文字列をパラメーター プレースホルダーとして渡し、このパラメーターをダミー値で初期化しました。

ループ内で、前のパラメーター値をVndnbrリストから取得した実際の値に置き換えて、コマンドを実行しました。

于 2013-10-24T17:17:50.587 に答える