2013-08-27 7 views
1

У меня есть приложение, написанное на asp.net и C#. Я использую класс с подключенным режимом для вставки/обновления и удаления операторов. У меня есть правильная команда try, catch и finally, которая открывает и закрывает OracleConnection. Но все же иногда он просто выходит без закрытия соединения и делает блокировки в DataBase, что, в свою очередь, останавливает сайт.Вызов INSERT/UPDATE/DELETE с использованием DataAdapter.Fill()

Теперь я решил изменить запросы в отключенном режиме, когда DataAdapter будет управлять проблемами подключения. Мне нужно выполнить пользовательские запросы с параметрами.

Я написал приложение, в котором я попытался вызвать инструкции INSERT/UPDATE/DELETE, используя метод FILL объекта DataAdapter. Его работа прекрасна. (Для метода da.Update() для него требуется состояние строки и строки и т. Д., Которое, как я думал, будет жестким)

Я хочу знать, будут ли возникать проблемы с производительностью базы данных или приложения, если i используйте этот метод?

int i = 0; 
    using (OracleConnection con = new OracleConnection(WebConfigurationManager.ConnectionStrings["MYSTRING"].ConnectionString)) 
    { 
     OracleCommand cmd = new OracleCommand("INSERT INTO MYTABLE(ID) VALUES(:ID)", con);   
     cmd.Parameters.AddWithValue(":ID", 123); 

     using (OracleDataAdapter da = new OracleDataAdapter(cmd))    
     { 
      i = da.Fill(new DataSet()); 
     } 
     cmd.Dispose(); 
    } 
    return i; 

В приведенном выше коде используется любой запрос (вставка, обновление, удаление), который отправляется в DataAdapter. Должен ли я сделать это любым другим способом или это будет нормально?

+0

Я думаю, что я вижу, что вы до, и я сделал что-то подобное. Я хотел создать своего рода общую оболочку вокруг моего уровня базы данных, чтобы я мог легко вызвать хранимую процедуру со списком параметров без необходимости указывать Insert/Update/Delete. Использование DataAdapter.Fill(), похоже, работает, и я также не заметил каких-либо достижений производительности, но я также не уверен, что это хорошая практика или нет. Думаю, я буду продолжать использовать его, пока не узнаю иначе! –

ответ

0

Я не знаю об объектах OracleCommand, но в SqlDataAdapter у вас есть команда Insert, DeleteCommand, UpdateCommand. DataAdapterProperties или же вы можете использовать IDbDataAdapter интерфейс IDbDataAdapter Interface

yourDataAdapter.InsertCommand = YourInsertCommandObject;// 

для обновления

yourDataAdapter.UpdateCommand = YourUpdatcommand; 
+0

В приведенном выше я не хочу указывать ни одно из них, и оно отлично работает. Я просто хочу знать, будут ли возникать какие-либо проблемы производительности на более поздних этапах реализации – smilu