开发者

The SqlParameterCollection only accepts non-null SqlParameter type objects, not MySqlParameter objects

I have created a method that will insert any exceptions thrown into a table on "ExceptionLog" on MySql server.

ExceptionLog Table format

idExceptionLog int (AI) User (varchar 45) ErrorMessage (varchart 4000)

The problem is i keep getting the following error. Does anyone know why?

The SqlParameterCollection only accepts non-null SqlParameter type objects, not MySqlParameter objects.

private void showErrorBox(String errorMsg, MessageBoxButtons btnokshow)
    {

        MessageBox.Show(errorMsg, "FS Manager Error", MessageBoxButtons.OK);

        // write to DB

        string username = System.Environment.UserName.ToString();
        string timestamp = DateTime.Now.ToString();

          // Locals
        SqlConnection NasDB = null;
        SqlCommand inputError = null;
        int rows = 0;
        string spName = "ExceptionInsert";

        try
        {
            //Instantiate the DB connection setting the conn string
            using (NasDB = new SqlConnection(getConnectionString(ConnectionType.NAS)))
            {
                // Instantiate the command object that will fire the SP.
                using (inputError = new SqlCommand(spName, NasDB))
                {
                    // Finish setting up the command object
          开发者_开发问答          inputError.CommandType = CommandType.StoredProcedure;

                    // Set up the SP params.


                    inputError.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("ExceptionDate", MySql.Data.MySqlClient.MySqlDbType.DateTime, (1)));
                    inputError.Parameters[0].Value = timestamp;

                    inputError.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("User", MySql.Data.MySqlClient.MySqlDbType.VarChar, (45)));
                    inputError.Parameters[1].Value = System.Environment.UserName.ToString();

                    inputError.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("ExceptionMessage", MySql.Data.MySqlClient.MySqlDbType.VarChar, (4000)));
                    inputError.Parameters[2].Value = errorMsg;

                   
                    // Now that the SP is completely set up and ready to go open the conn and fire the SP.
                    inputError.Connection.Open();
                    rows = inputError.ExecuteNonQuery();

                    // Close ASAP
                    inputError.Connection.Close();
                }
            }

        }
        catch (Exception ex)
        {
            //showErrorBox(ex.ToString());
            throw ex;
        }


All the classes inside System.Data.SqlClient are used for SQL Server database & not mysql.

In your code, replace SqlCommand with MySqlCommand and SqlConnection with MySqlConnection.

EDIT: See this page for the classes, you could use in this case.


I have made some slight changes and am now getting the following error.

**

Input string was not in a correct

**

This is the Stored proceedure i using and the method.

-- --------------------------------------------------------------------------------

-- Routine DDL


DELIMITER $$

CREATE DEFINER=Admin@% PROCEDURE test( IN p_idExceptionLog INT(32) , IN p_ExceptionDate DATETIME , IN p_User VARCHAR(45) , IN p_ExceptionMessage VARCHAR(4000)

 )

BEGIN

INSERT INTO ExceptionLog
     (
       id                    , 
       Date                  , 
       User                  , 
       Message                                      
     )
VALUES 
     ( 
       p_idExceptionLog                    , 
       p_ExceptionDate                     , 
       p_User                              , 
       p_ExceptionMessage                    
     ) ; 

END

  private void showErrorBox(String errorMsg, MessageBoxButtons btnokshow)
    {

        MessageBox.Show(errorMsg, "FS Manager Error", MessageBoxButtons.OK);

        // write to DB

        string username = System.Environment.UserName.ToString();
        string timestamp = DateTime.Now.ToString();

          // Locals
        MySqlConnection NasDB = null;
    //    MySqlCommand inputError1 = new MySqlCommand();
        MySqlCommand inputError = null;
               int rows = 0;
        string spName = "test";

        try
        {
            //Instantiate the DB connection setting the conn string
            using (NasDB = new MySqlConnection(getConnectionString(ConnectionType.NAS)))
            {
                // Instantiate the command object that will fire the SP.
                using (inputError = new MySqlCommand(spName, NasDB))
                {
                    // Finish setting up the command object
                    inputError.CommandType = CommandType.StoredProcedure;

                    // Set up the SP params.

                    inputError.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("p_idExceptionLog", MySql.Data.MySqlClient.MySqlDbType.Int32, (1)));
                    inputError.Parameters[0].Value = "";

                    inputError.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("p_ExceptionDate", MySql.Data.MySqlClient.MySqlDbType.DateTime, (1)));
                    inputError.Parameters[1].Value = timestamp;

                    inputError.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("p_User", MySql.Data.MySqlClient.MySqlDbType.VarChar, (45)));
                    inputError.Parameters[2].Value = System.Environment.UserName.ToString();

                    inputError.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("p_ExceptionMessage", MySql.Data.MySqlClient.MySqlDbType.VarChar, (4000)));
                    inputError.Parameters[3].Value = errorMsg;

                    // Now that the SP is completely set up and ready to go open the conn and fire the SP.
                    inputError.Connection.Open();
                    rows = inputError.ExecuteNonQuery();

                    // Close ASAP
                    inputError.Connection.Close();
                }
            }

        }
        catch (Exception ex)
        {
            //showErrorBox(ex.ToString());
            throw ex;
        }
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜