c#操作access,出現“內部錯誤: 無效的參數訪問器: 2 BADBINDINFO”的解決辦法__c#

來源:互聯網
上載者:User

        c#操作SQL資料庫的常用程式碼片段如下:

/// <summary>    /// 執行命令    /// </summary>    /// <param name="procName">命令文本</param>    /// <param name="prams">參數對象</param>    /// <returns></returns>    public int RunProc(string procName, SqlParameter[] prams)    {        SqlCommand cmd = CreateCommand(procName, prams);        cmd.ExecuteNonQuery();        this.Close();        //得到執行成功傳回值        return (int)cmd.Parameters["ReturnValue"].Value;    }
/// <summary>    /// 建立一個SqlCommand對象以此來執行命令文本    /// </summary>    /// <param name="procName">命令文本</param>    /// <param name="prams"命令文本所需參數</param>    /// <returns>返回SqlCommand對象</returns>    private SqlCommand CreateCommand(string procName, SqlParameter[] prams)    {        // 確認開啟串連        this.Open();        SqlCommand cmd = new SqlCommand(procName, con);        cmd.CommandType = CommandType.Text;     //執行類型:命令文本        // 依次把參數傳入命令文本        if (prams != null)        {            foreach (SqlParameter parameter in prams)                cmd.Parameters.Add(parameter);        }        // 加入返回參數        cmd.Parameters.Add(            new SqlParameter("ReturnValue", SqlDbType.Int, 4,            ParameterDirection.ReturnValue, false, 0, 0,            string.Empty, DataRowVersion.Default, null));        return cmd;    }

         如果把SQL換成access。相應代碼只需要把sql類型換成OleDb類型即可。

         c#操作access資料庫的常用代碼如下:

/// <summary>        /// 執行命令        /// </summary>        /// <param name="procName">命令文本</param>        /// <param name="prams">參數對象</param>        /// <returns></returns>        public int RunProc(string procName, OleDbParameter[] prams)        {            OleDbCommand cmd = CreateCommand(procName, prams);            cmd.ExecuteNonQuery();            this.Close();            //得到執行成功傳回值            //return (int)cmd.Parameters["ReturnValue"].Value;            return 1;        }
/// <summary>        ///  建立一個OleDbCommand對象以此來執行命令文本        /// </summary>        /// <param name="procName">命令文本</param>        /// <param name="prams"命令文本所需參數</param>        /// <returns>返回OleDbCommand對象</returns>        private OleDbCommand CreateCommand(string procName, OleDbParameter[] prams)        {            // 確認開啟串連            this.Open();            OleDbCommand cmd = new OleDbCommand(procName, con);            cmd.CommandType = CommandType.Text;     //執行類型:命令文本            // 依次把參數傳入命令文本            if (prams != null)            {                foreach (OleDbParameter parameter in prams)                    cmd.Parameters.Add(parameter);            }            // 加入返回參數            //cmd.Parameters.Add(            //    new OleDbParameter("ReturnValue", OleDbType.Integer, 4,            //    ParameterDirection.ReturnValue, false, 0, 0,            //    string.Empty, DataRowVersion.Default, null));            return cmd;        }

        由於access不需要傳回值。因此CreateCommand函數裡面不需要如下部分:

cmd.Parameters.Add(            new SqlParameter("ReturnValue", SqlDbType.Int, 4,            ParameterDirection.ReturnValue, false, 0, 0,            string.Empty, DataRowVersion.Default, null));

        如果不把該部分去掉,依然照搬操作SQL的代碼。將出現報錯“異常詳細資料: System.InvalidOperationException: System.Data.OleDb.OleDbDataAdapter 內部錯誤: 無效的參數訪問器: 2 BADBINDINFO。”       

        如果碰到類似錯誤,不妨按照上述的把傳回值注釋掉。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.