У меня проблема, у меня есть хранимая процедура в моей базе данных MySQL: sp_insertSupplier. Этот метод работает, когда выполняется в базе данных mysql.Ошибка C#, Выполнение хранимой процедуры, Хранимая процедура недоступна
Я делаю этот синтаксис в кнопке Сохранить
private void btn_supplier_save_Click(object sender, EventArgs e)
{
string connections = Connection.mysqlconnectionbuilder();
using (MySqlConnection conn = new MySqlConnection(connections))
{
using (MySqlCommand cmd = new MySqlCommand())
{
//make connection
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "call sp_insertSupplier(@KD,@NM,@AL,@EM,@TLP);";
cmd.Parameters.AddWithValue("@KD", createCode());
cmd.Parameters.AddWithValue("@NM", txtsuppliernama.Text);
cmd.Parameters.AddWithValue("@AL", txtsupplieralamat.Text);
cmd.Parameters.AddWithValue("@EM", txtsupplieremail.Text);
cmd.Parameters.AddWithValue("@TLP",txtsuppliernotelp.Text);
try
{
conn.Open();
int result = cmd.ExecuteNonQuery();
//check the result status
if (result.Equals(1))
{
DialogResult results = MessageBox.Show("Data berhasil ditambahkan! \n Apakah anda ingin input data lainnya? ", "Sukses!", MessageBoxButtons.OKCancel);
//cek apabila ingin menambahkan data lagi.
if (results.Equals(DialogResult.OK))
{
reset();
}
else if (results.Equals(DialogResult.Cancel))
{
this.Close();
}
}
} //end TRY
catch (Exception exe)
{
MessageBox.Show("Terjadi Kesalahan", "Perhatian!", MessageBoxButtons.OK, MessageBoxIcon.Error);
StreamWriter _writer = new StreamWriter("E899911823.log");
_writer.WriteLine(exe.ToString());
Console.WriteLine(exe.ToString());
} //END CATCH
finally
{
conn.Clone();
} //END FINALLY
}
}
}
, но, когда я выполняю синтаксис, он показывает ошибку:
MySql.Data.MySqlClient.MySqlException (0x80004005): Procedure or function '`call sp_insertSupplier(@KD,@NM,@AL,@EM,@TLP)`' cannot be found in database XXXXX
Я не думаю, что никаких проблем с менеджером связи или случайный метод для создания @KD.
У меня есть еще такие же проблемы, консоль показывает:
MySql.Data.MySqlClient.MySqlException (0x80004005): Procedure or function '`call sp_insertSupplier`' cannot be found in database '`XXXXX`'.
at MySql.Data.MySqlClient.ProcedureCache.GetProcData(MySqlConnection connection, String spName)
at MySql.Data.MySqlClient.ProcedureCache.AddNew(MySqlConnection connection, String spName)
at MySql.Data.MySqlClient.ProcedureCache.GetProcedure(MySqlConnection conn, String spName, String cacheKey)
at MySql.Data.MySqlClient.StoredProcedure.GetParameters(String procName, DataTable& proceduresTable, DataTable& parametersTable)
at MySql.Data.MySqlClient.StoredProcedure.CheckParameters(String spName)
at MySql.Data.MySqlClient.StoredProcedure.Resolve(Boolean preparing)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
at SerbaManisInventory.SupplierAdd.btn_supplier_save_Click(Object sender, EventArgs e)
Я просто переписать код так, что такой код:
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "call sp_insertSupplier";
cmd.Parameters.AddWithValue("@KD", createCode());
cmd.Parameters.AddWithValue("@NM", txtsuppliernama.Text);
cmd.Parameters.AddWithValue("@AL", txtsupplieralamat.Text);
cmd.Parameters.AddWithValue("@EM", txtsupplieremail.Text);
cmd.Parameters.AddWithValue("@TLP",txtsuppliernotelp.Text);
try
{
...
спасибо за ответ, я просто попробую, но он по-прежнему показывает ошибку: – randytan
удалите этот 'call'. Просто напишите 'sp_insertSupplier' –
oops, я забыл, что« звонок »: D спасибо за помощь приятель! отлично провести время! работаю сейчас. – randytan