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;
}
}
精彩评论