Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Ошибка Oracle


Автор: DarkASU 11.2.2009, 13:49
Как решить проблему есть запрос
Код

OracleConnection conn = new OracleConnection(ocs);
                OracleCommand oc = conn.CreateCommand();
                oc.CommandText = "UPDATE ADMIN.APM SET STANCIA = :STANCIA, SN = :SN, TIPAPM = :TIPAPM, REGIMRABOTU = :REGIMRABOTU, KLAVIATURA = :KLAVIATURA, MONITOR = :MONITOR, SDACHA = :SDACHA, VIDACHA = :VIDACHA, VVOD = :VVOD WHERE (((:IsNull_STANCIA = 1 AND STANCIA IS NULL) OR (STANCIA = :Original_STANCIA)) AND (SN = :Original_SN) AND ((:IsNull_TIPAPM = 1 AND TIPAPM IS NULL) OR (TIPAPM = :Original_TIPAPM)) AND ((:IsNull_REGIMRABOTU = 1 AND REGIMRABOTU IS NULL) OR (REGIMRABOTU = :Original_REGIMRABOTU)) AND ((:IsNull_KLAVIATURA = 1 AND KLAVIATURA IS NULL) OR (KLAVIATURA = :Original_KLAVIATURA)) AND ((:IsNull_MONITOR = 1 AND MONITOR IS NULL) OR (MONITOR = :Original_MONITOR)) AND ((:IsNull_SDACHA = 1 AND SDACHA IS NULL) OR (SDACHA = :Original_SDACHA)) AND ((:IsNull_VIDACHA = 1 AND VIDACHA IS NULL) OR (VIDACHA = :Original_VIDACHA)) AND ((:IsNull_VVOD = 1 AND VVOD IS NULL) OR (VVOD = :Original_VVOD)))";
                OracleDataAdapter da = new OracleDataAdapter(oc);
                DataSet ds = new DataSet("APM");
                da.Fill(ds, "APM");
                conn.Close();

при вводе через OraDeveloper Studio все нормально при передаче через C# выдает ошибку ORA-01008 Не все данные привязаны

Автор: emmanuil 12.2.2009, 05:45
Код

            // не забываем, что можно завернуть в using
            using (OracleConnection conn = new OracleConnection(ocs)) {
                using (OracleCommand oc = conn.CreateCommand()) {
                    oc.CommandText = "UPDATE ADMIN.APM SET STANCIA = :STANCIA, SN = :SN, TIPAPM = :TIPAPM, REGIMRABOTU = :REGIMRABOTU, KLAVIATURA = :KLAVIATURA, MONITOR = :MONITOR, SDACHA = :SDACHA, VIDACHA = :VIDACHA, VVOD = :VVOD WHERE (((:IsNull_STANCIA = 1 AND STANCIA IS NULL) OR (STANCIA = :Original_STANCIA)) AND (SN = :Original_SN) AND ((:IsNull_TIPAPM = 1 AND TIPAPM IS NULL) OR (TIPAPM = :Original_TIPAPM)) AND ((:IsNull_REGIMRABOTU = 1 AND REGIMRABOTU IS NULL) OR (REGIMRABOTU = :Original_REGIMRABOTU)) AND ((:IsNull_KLAVIATURA = 1 AND KLAVIATURA IS NULL) OR (KLAVIATURA = :Original_KLAVIATURA)) AND ((:IsNull_MONITOR = 1 AND MONITOR IS NULL) OR (MONITOR = :Original_MONITOR)) AND ((:IsNull_SDACHA = 1 AND SDACHA IS NULL) OR (SDACHA = :Original_SDACHA)) AND ((:IsNull_VIDACHA = 1 AND VIDACHA IS NULL) OR (VIDACHA = :Original_VIDACHA)) AND ((:IsNull_VVOD = 1 AND VVOD IS NULL) OR (VVOD = :Original_VVOD)))";
                    using (OracleDataAdapter da = new OracleDataAdapter(oc)) { // в адаптер нужно подать select команду а у тебя update в CommandText, да еще и параметрам никакого значения не указал
                        DataSet ds = new DataSet("APM");
                        da.Fill(ds, "APM");
                    }
                }
            }
Такие емкие sql-запросы лучше храни в ресурсах и оттуда их дергай. А еще лучше делай хранимую процедуру на сервере. В коде писать sql не хорошо! Удачи!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)