我创建了一个方法,它将在MySql服务器上的“ExceptionLog”中插入抛出到表中的任何异常。
ExceptionLog表格式
idExceptionLog int(AI) 用户(varchar 45) ErrorMessage(varchart 4000)
问题是我一直收到以下错误。有谁知道为什么?
仅限SqlParameterCollection 接受非null的SqlParameter类型 对象,而不是MySqlParameter对象。
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;
}
由于
答案 0 :(得分:1)
System.Data.SqlClient
内的所有类都用于SQL Server数据库&不是mysql。
在您的代码中,将SqlCommand
替换为MySqlCommand
,将SqlConnection
替换为MySqlConnection
。
编辑:有关课程,请参阅this页面,在这种情况下可以使用。
答案 1 :(得分:0)
我做了一些小改动,现在收到以下错误。
**
输入字符串不正确
**
这是我使用的存储过程和方法。
-- --------------------------------------------------------------------------------
- 常规DDL
DELIMITER $$
创建DEFINER = Admin
@ %
程序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;
}
}