ORA-01008 Ошибка вставки записи в базу данных Oracle с использованием OleDb

1

Код включает в себя вставку записи из значений, введенных в VS 2010, в Oracle DB с использованием С#. База данных была создана в sqlplus, и после отладки в VS iive столкнулся с ошибкой-ORA 01008. Шесть синтаксиса совпадает с синтаксисом по умолчанию. Может кто-то указать на ошибку.

OleDbConnection con = new OleDbConnection();
con.ConnectionString = "Provider="provider";Data Source=xxxx;User ID=usernamePassword=password";

con.Open();

string insertquery = "insert into CHECKLIST(ID,CUSTOMER,SERVER,CHECK_TYPE,DESCRIPTION,PATH_URL,TEXT,CAT3,CAT4) Values (:id,:customer,:server,:check1,:description,:path1,:text1,:cat3,:cat4)";

OleDbCommand cmd = new OleDbCommand(insertquery, con);
OleDbDataAdapter adapter = new OleDbDataAdapter(insertquery, con);

cmd.Parameters.Add(new OleDbParameter(":id", TextBox9.Text));
cmd.Parameters.Add(new OleDbParameter(":customer", TextBox1.Text));
cmd.Parameters.Add(new OleDbParameter(":server", TextBox2.Text));
cmd.Parameters.Add(new OleDbParameter(":check1", TextBox3.Text));
cmd.Parameters.Add(new OleDbParameter(":description", TextBox4.Text));
cmd.Parameters.Add(new OleDbParameter(":path1", TextBox5.Text));
cmd.Parameters.Add(new OleDbParameter(":text1", TextBox6.Text));
cmd.Parameters.Add(new OleDbParameter(":cat3", TextBox7.Text));
cmd.Parameters.Add(new OleDbParameter(":cat4", TextBox8.Text));

cmd.ExecuteNonQuery();

Response.Write("Registration is successful");

con.Close();
Теги:
visual-studio-2010

1 ответ

0

Из свойства OleDbCommand.Parameters

Поставщик OLE DB.NET не поддерживает именованные параметры для передачи параметров в оператор SQL или хранимую процедуру, вызванную OleDbCommand, когда CommandType установлен в Text. В этом случае необходимо использовать метку вопроса (?). Например:

SELECT * FROM Customers WHERE CustomerID =?

Поэтому порядок, в котором объекты OleDbParameter добавляются в OleDbParameterCollection, должен непосредственно соответствовать позиции заполнителя вопросительного знака для параметра в тексте команды.

Попробуйте ? для указания ваших параметров.

string insertquery = @"insert into CHECKLIST(ID,CUSTOMER,SERVER,CHECK_TYPE,DESCRIPTION,PATH_URL,TEXT,CAT3,CAT4)
                     Values(?,?,?,?,?,?,?,?,?)";

Ваш OleDbDataAdapter кажется бессмысленным. Вы просто вставляете данные. Вы не возвращаете данные для хранения в OleDbDataAdapter.

Также using инструкцию using для управления вашими OleDbConnection и OleDbCommand;

using(OleDbConnection con = new OleDbConnection(conString))
using(OleDbCommand cmd = con.CreateCommand())
{
    // Set your CommandText property.
    // Define and add your parameter values.
    // Open your OleDbConnection.
    // Execute your query with ExecuteNonQuery.
}
  • 0
    Спасибо за ответ. Эта ошибка была устранена, хотя. Однако при отладке обнаружена ошибка: MSDAORA 'завершился неудачно, сообщение об ошибке отсутствует, код результата: E_FAIL (0x80004005) тип ошибки .. как исправить эту ошибку
  • 0
    @KaashyapSarma Добро пожаловать. Я не могу думать о вашей второй проблеме с таким меньшим количеством информации. Если у вас есть другой вопрос, вы должны задать его как отдельный вопрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню