Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 В таблице появляются несколько одних и тех же строк при записи.  [new]
son456
Member

Откуда:
Сообщений: 303
Здравствуйте. Столкнулся с такой проблемой, при записи одной строки, через некоторое время в таблице появляются одни и те же строки. Использую Devart.Data.dll,Devart.Data.Oracle.dll
Файл работы с базой:
public partial class DAL
    {
        
        private string ConnectionString
        {
            get
            {
                return RAB_UCHET.Properties.Settings.Default.ConnectionString;
            }
        }
        public OracleConnection OracleConnection
        {
            get
            {
                if (this.oracleConnection == null)
                {
                    this.oracleConnection = new OracleConnection(this.ConnectionString);
                    oracleConnection.Unicode = true;
                    oracleConnection.Open();
                }
                
                return this.oracleConnection;
            }
        }
        public void UpdInsQuare(string queryString)
        {
            try{
                OracleCommand command = new OracleCommand(queryString, this.OracleConnection);
                //OracleConnection.Open();
                command.ExecuteNonQuery();
                //OracleConnection.Commit();
                
                queryString = "";
            }
            catch
            {
            }
        }
public bool Commit()
        {
            UpdInsQuare("Commit;");
            return true;
        }
        public bool AddEmployer(Employer emp)
        {
            try
            {
                queryString = "insert into EMPLOYESS(HID,PERSON_NUMBER,SURNAME_EMPLOYER,NAME_EMPLOYER,PATRONOMIC_EMPLOYER,HID_ORGANIZATION,HID_DEPARTMENT,POST,ID_CARD)" +
                    "values(EMPLOYESS_HID.NEXTVAL,'" + emp.PersonNumber +
                    "','"  + emp.SurnameEmployer + "','" + emp.NameEmployer + "','" + emp.PatronomicEmployer +
                    "','" + emp.HID_ORGANIZATION + "','" +  emp.HID_DEPARTMENT + "','" + emp.Post +"','"+emp.ID_Card+"')";

               UpdInsQuare(queryString);
               Commit();
               queryString = "";
            }
            catch
            {
                return false;
            }
            return true;
        }
}

Файл диалога
public partial class fNewEmployer : Form
    {
//public Employer NewEmployer { get; private set; }
        DAL dal = new DAL();
        public fNewEmployer()
        {
            InitializeComponent();
        }

        private void bt_save_Click(object sender, EventArgs e)
        {
            if (tb_name.Text.Trim() == string.Empty ||
                tb_surname.Text.Trim() == string.Empty ||
                tb_patronomic.Text.Trim() == string.Empty ||
                tb_personNumber.Text.Trim() == string.Empty ||
                cb_nameOrg.Text.Trim() == string.Empty ||
                cb_nameDep.Text.Trim() == string.Empty ||
                tb_Post.Text.Trim() == string.Empty ||
                tb_idCard.Text.Trim() == string.Empty)
            {
                lb_mess.Text = "Не все поля заполнены.";
                lb_mess.BackColor = Color.Red;
                return;
            }

            dal.AddEmployer(new Employer(string.Empty, tb_personNumber.Text.Trim(), tb_surname.Text.Trim(), tb_name.Text.Trim(), tb_patronomic.Text.Trim(), dal.SelOrg(cb_nameOrg.Text.Trim()),
            dal.SelHidDep(cb_nameDep.Text.Trim()), tb_Post.Text.Trim(), tb_idCard.Text.Trim()));
            DialogResult = DialogResult.OK;
        }
private void fNewEmployer_Load(object sender, EventArgs e)
        {
            cb_nameOrg.Items.Clear();
            foreach (string item in dal.SelNameOrg())
            {
                cb_nameOrg.Items.Add(item);
            }
        }

        private void cb_nameDep_Click(object sender, EventArgs e)
        {
            if (cb_nameOrg.Text.Trim() != string.Empty)
            {
                cb_nameDep.Items.Clear();
                foreach (string item in dal.SelNameDepartaments(cb_nameOrg.Text.Trim()))
                {
                    cb_nameDep.Items.Add(item);
                }
            }
        }
}


К сообщению приложен файл. Размер - 146Kb
24 фев 17, 20:22    [20242146]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1635
Не полностью оформленный test case немногим лучше отсутствия оного.

Проблема не в оракле - на один атом менее 100%.
24 фев 17, 20:25    [20242151]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
son456
Member

Откуда:
Сообщений: 303
Можете посоветовать мне что делать?Или вопрос нужно переместить на C#.
24 фев 17, 22:41    [20242443]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
daughter789
Guest
определи появляются записи когда поделка запущена и нет
25 фев 17, 00:29    [20242615]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7420
son456,

У продукта ODAC от DevArt, которым ты пользуешся есть SQL*Monitor. Включи его и посмотри какие команды твоя поделка фигачит.
25 фев 17, 01:02    [20242644]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
son456
Member

Откуда:
Сообщений: 303
Как его включить, у меня всего две dll.
25 фев 17, 21:03    [20243659]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
Понимаю в этом деле
Guest
son456
                queryString = "insert into EMPLOYESS(HID,PERSON_NUMBER,SURNAME_EMPLOYER,NAME_EMPLOYER,PATRONOMIC_EMPLOYER,HID_ORGANIZATION,HID_DEPARTMENT,POST,ID_CARD)" +
                    "values(EMPLOYESS_HID.NEXTVAL,'" + emp.PersonNumber +
                    "','"  + emp.SurnameEmployer + "','" + emp.NameEmployer + "','" + emp.PatronomicEmployer +
                    "','" + emp.HID_ORGANIZATION + "','" +  emp.HID_DEPARTMENT + "','" + emp.Post +"','"+emp.ID_Card+"')";

               UpdInsQuare(queryString);



Так программировать нельзя, это верный путь к SQL Injection.

А ещё в заголовке окна опечатка: "выбРать служащего"
25 фев 17, 22:38    [20243836]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54375
son456
        public bool AddEmployer(Employer emp)
        {
            try
            {
                queryString = "insert into EMPLOYESS(HID,PERSON_NUMBER,SURNAME_EMPLOYER,NAME_EMPLOYER,PATRONOMIC_EMPLOYER,HID_ORGANIZATION,HID_DEPARTMENT,POST,ID_CARD)" +
                    "values(EMPLOYESS_HID.NEXTVAL,'" + emp.PersonNumber +
                    "','"  + emp.SurnameEmployer + "','" + emp.NameEmployer + "','" + emp.PatronomicEmployer +
                    "','" + emp.HID_ORGANIZATION + "','" +  emp.HID_DEPARTMENT + "','" + emp.Post +"','"+emp.ID_Card+"')";

               UpdInsQuare(queryString);
               Commit();
               queryString = "";
            }
            catch
            {
                return false;
            }
            return true;
        }


глобально-бессмысленные переменные и задавливание ошибки
жалко, что расстрелы отменили
25 фев 17, 23:16    [20243881]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
А?
Guest
son456,

Я не пойму, ты че, в винде не выставил галочку "Использовать маленькие кнопки в панели задач"?
26 фев 17, 10:28    [20244165]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
son456
Member

Откуда:
Сообщений: 303
Если критикуете, тогда пишите как должен выглядеть код.
26 фев 17, 11:28    [20244263]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
son456
Member

Откуда:
Сообщений: 303
У продукта ODAC от DevArt, которым ты пользуешся есть SQL*Monitor. Включи его и посмотри какие команды твоя поделка фигачит.

Я скачал программу dbmonitor.exe вы о ней говорили. Или в моих dll есть уже монитор и его нужно включить.
26 фев 17, 11:42    [20244289]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
Elic
Member

Откуда:
Сообщений: 29976
son456
Если критикуете, тогда пишите как должен выглядеть код.
Пойми, на свободных форумах никто никому ничего не должен. Тем более ламерам.
26 фев 17, 19:59    [20245078]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54375
son456
Если критикуете, тогда пишите как должен выглядеть код.


        public bool AddEmployer(Employer emp)
        {
            string queryString;
            try
            {
                queryString = "insert into EMPLOYESS(HID,PERSON_NUMBER,SURNAME_EMPLOYER,NAME_EMPLOYER,PATRONOMIC_EMPLOYER,HID_ORGANIZATION,HID_DEPARTMENT,POST,ID_CARD)" +
                    "values (EMPLOYESS_HID.NEXTVAL, :p_PersonNumber , :p_SurnameEmployer, :p_NameEmployer, :p_PatronomicEmployer, " +
                    ":p_HID_ORGANIZATION, :p_HID_DEPARTMENT, :p_Post, :p_ID_Card)";

               привязать переменные или создать массив переменных и передать его в UpdInsQuare
               UpdInsQuare(queryString);
               Commit();
               queryString = "";
            }
            catch
            {
                выдать сообщение или записать в лог или вообще не перехватывать
                return false;
            }
            return true;
        }
26 фев 17, 20:14    [20245099]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
AnSi_Sr
Member

Откуда:
Сообщений: 134
В bt_save_Click добавляется новая запись в БД.
P.S. См. еще "oracle bind variables" в гугле.
27 фев 17, 07:36    [20245682]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
СвинопасЪ
Member

Откуда: Ukraine, Nickopol
Сообщений: 8
son456
Здравствуйте. Столкнулся с такой проблемой, при записи одной строки, через некоторое время в таблице появляются одни и те же строки. Использую Devart.Data.dll,Devart.Data.Oracle.dll
Файл работы с базой:
public partial class DAL
    {
        
        private string ConnectionString
        {
            get
            {
.......................................
      


Была как-то такая проблемка именно такая же ситуация - дублирование записи при вставке через некоторое время, достаточно просто решается. Какую версию сервера Oracle используете? Используется ли партиционирование? Какие версии библиотек ДевАрт?
15 мар 17, 21:01    [20299603]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54375
СвинопасЪ
son456
Здравствуйте. Столкнулся с такой проблемой, при записи одной строки, через некоторое время в таблице появляются одни и те же строки. Использую Devart.Data.dll,Devart.Data.Oracle.dll
Файл работы с базой:
public partial class DAL
    {
        
        private string ConnectionString
        {
            get
            {
.......................................
      


Была как-то такая проблемка именно такая же ситуация - дублирование записи при вставке через некоторое время, достаточно просто решается. Какую версию сервера Oracle используете? Используется ли партиционирование? Какие версии библиотек ДевАрт?
внимательно буду слушать, как ответы на эти вопросы помогут решить проблему
15 мар 17, 21:06    [20299614]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7420
son456
У продукта ODAC от DevArt, которым ты пользуешся есть SQL*Monitor. Включи его и посмотри какие команды твоя поделка фигачит.

Я скачал программу dbmonitor.exe вы о ней говорили. Или в моих dll есть уже монитор и его нужно включить.
а о нем не говорил. dbmonotor и sqlmonitor это - две большие разницы.
не помню, как точка нете, а в Делфи бросаешь компонент на форму TOraSQLMonitor.Activate to True и все.
там должно быть аналогично.
16 мар 17, 02:09    [20300137]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6696
son456
Если критикуете, тогда пишите как должен выглядеть код.


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

вы б ать автора
через некоторое время в таблице появляются одни и те же строки.

И через какое же время это происходит?
Покажите содержимое таблицы в БД до и после однократного добавления записи в таблицу БД.

Также можете повесить аудит на таблицу или включить трассировку своей сессии в СУБД.

з.ы. Items.Clear() точно отрабатывает?
16 мар 17, 10:31    [20300733]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
son456
Member

Откуда:
Сообщений: 303
Что такое партиционирование? Как повесить аудит на таблицу? Как включить трассировку своей сессии в СУБД. Items.Clear() точно отрабатывает. У меня Oracle 11, Devart.Data.dll версия 5.0.792.0, Devart.Data.Oracle.dll версия 7.9.333.0
24 мар 17, 10:02    [20328365]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6696
son456
Что такое партиционирование? Как повесить аудит на таблицу? Как включить трассировку своей сессии в СУБД.


Раз
Два
пока не будет прочитано - новых вопросов не пишите
24 мар 17, 10:10    [20328408]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
mefman
Member

Откуда:
Сообщений: 3163
son456
Что такое партиционирование? Как повесить аудит на таблицу? Как включить трассировку своей сессии в СУБД. Items.Clear() точно отрабатывает. У меня Oracle 11, Devart.Data.dll версия 5.0.792.0, Devart.Data.Oracle.dll версия 7.9.333.0

Драйверы переустановить нужно.
24 мар 17, 14:49    [20329810]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54375
mefman
son456
Что такое партиционирование? Как повесить аудит на таблицу? Как включить трассировку своей сессии в СУБД. Items.Clear() точно отрабатывает. У меня Oracle 11, Devart.Data.dll версия 5.0.792.0, Devart.Data.Oracle.dll версия 7.9.333.0

Драйверы переустановить нужно.
драйверы каждой партиции отдельно
24 мар 17, 15:43    [20330087]     Ответить | Цитировать Сообщить модератору
 Re: В таблице появляются несколько одних и тех же строк при записи.  [new]
mefman
Member

Откуда:
Сообщений: 3163
andreymx
mefman
пропущено...

Драйверы переустановить нужно.
драйверы каждой партиции отдельно

Разумеется. А как же иначе?
24 мар 17, 22:56    [20331308]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить