ORA-O1036: Недопустимое имя / номер переменной
Есть много сообщений, связанных с этим вопросом, но никто не работает в моем случае. Я использую базу данных oracle с C# в Visual Studio
void addUser()
{
OracleCommand cmd = new OracleCommand();
string query ="INSERT INTO users (user_id, f_name, hash, acc_type, cell_no, country, state, city, zip, address, email, img) VALUES ('" + Convert.ToString(username) + "','" + Convert.ToString(f_name) + "','" + password + "','" + acc_type + "','" + contactno + "','" + country + "','" + state + "','" + city + "','" + zip + "','" + address + "','" + email + "',imgByte)";
OracleCommand sc = new OracleCommand(query, usersdb);
sc.Parameters.AddWithValue("imgByte", imgByte);
try
{
usersdb.Open();
sc.ExecuteNonQuery();
usersdb.Close();
lblSignupError.Visible = true;
lblSignupError.Text = "Signed up successfully. You can login now.";
Clear();
LoginNow();
}
catch (Exception ex)
{
Console.WriteLine(ex);
if (usersdb.State == ConnectionState.Open)
{
usersdb.Close();
}
}
}
Вот код для регистрации, чтобы добавить пользователя в БД, но появляется эта ошибка
*** Возникло исключение: 'System.Data.OracleClient.OracleException' в System.Data.OracleClient.dll System.Data.OracleClient.OracleException (0x80131938): ORA-01036: недопустимое имя / номер переменной
в System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc) в System.Data.OracleClient.OracleParameterBinding.Bind(OciStatementHandle statementHandle, NativeBuffer parameterBuffer, OracleConnection connection, логический дескриптор.OracleCommand.Execute(OciStatementHandle statementHandle, поведение CommandBehavior, булева needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals) при System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(булево needRowid, OciRowidDescriptor& rowidDescriptor) в System.Data.OracleClient.OracleCommand.ExecuteNonQuery() в StopNShop.SignUpForm.addUser() в E:\Visual Studio Projects\StopNShop\StopNShop\SignUpForm.cs: строка 402***
1 ответ
Вы действительно должны использовать параметры для всех ваших входных значений; он не только будет более читабельным, но и предотвратит атаки SQL-инъекций.
В ответ на ваш вопрос параметры оракула должны быть предварены двоеточием, т.е. :imgByte
.
См. Этот пример: /questions/1842915/svyazyivanie-parametrov-oraclecommand-sql/1842929#1842929