0

私はこのコードを持っていますが、これは厄介な形で正しく動作します。しかし、どういうわけか、特定の形式では機能せず、このエラーが発生します(行でconnction.Open();)Unspecified error

コードは、複数の行をテーブルに追加することを想定しています。コードは次のとおりです。

                    for (int i = 0; st1.Length > i; i++)
                    UpdateDataBase(st1[i]);


private void UpdateDataBase(char letter)
    {
        int serialPro = 0;
        string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
                                  "Data Source=C:\\Projects_2012\\Project_Noam\\Access\\myProject.accdb";
        try
        {
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                string sql = "SELECT tblProInfo.proInfoSerialNum FROM tblProInfo ";
                using (OleDbCommand command = new OleDbCommand(sql, connection))
                {
                    connection.Open();
                    OleDbDataReader reader = command.ExecuteReader();
                    //get the last!
                    while (reader.Read())
                        serialPro = reader.GetInt32(0);

                }
                sql = "INSERT INTO tblOrderAA (orderAASerialPro, orderAACodon1) "
                   + " values (?, ?)";
                using (OleDbCommand command = new OleDbCommand(sql, connection))
                {
                    command.CommandType = CommandType.Text;
                    command.Parameters.AddWithValue("orderAASerialPro", serialPro);
                    command.Parameters.AddWithValue("orderAACodon1", letter);
                    command.ExecuteNonQuery();
                }


            }
        }
        catch (Exception e)
        {
            MessageBox.Show("error in:" + e.Message);
        }
    }

MAX を使用して最後の 1 つを取得できることを知っています。しかし、それは別の形で正しく機能します。だから私はその理由を理解しようと主張します!助けてくれてありがとう。

4

2 に答える 2

0

間違っていない場合は、リーダーを閉じていないので、追加してみてください

while (reader.Read())
    serialPro = reader.GetInt32(0);
reader.Close();

編集

私が言うことをしてください(将来のバッグを削除するため)

どこかでstaticconnectionとして作成し (たとえば、program.cs で、静的クラスを作成する場合に適しています)、この方法で呼び出します。

        if(Program.connection.State==System.Data.ConnectionState.Closed)
            Program.connection.Open();
于 2012-05-21T13:43:57.213 に答える
0

最近、同様の問題に直面しました。昇格された特権で接続を開閉してコードを実行してみてください

于 2012-05-21T14:00:39.423 に答える