На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Тип данных Varchar для ключевого поля
    Профессионалы , у меня проблема с типом поля, есть таблица в ней ключевым полем является name - имя оно типа varchar, когда заполняю данными (именами) названиями, ругается на неправильный тип, а сохраняет если только впишу цифровые значения, что делать? Сделал их ключевыми потому что по ним идет связь с другими таблицами
      Срочно создавать суррогатный ключ и делать связь по нему! Если еще не поздно конечно.
      Тестовые ключевые поля это не правильно, т.к. сильно пострадает эффективность при выполнении запросов
        Цитата drmiller @
        Срочно создавать суррогатный ключ и делать связь по нему! Если еще не поздно конечно.
        Тестовые ключевые поля это не правильно, т.к. сильно пострадает эффективность при выполнении запросов

        а никак уже просто во всех таблицах отображать нужно это поле и связь идет по нему
          Цитата Ali002 @
          а никак уже просто во всех таблицах отображать нужно это поле и связь идет по нему

          Получилось побороть varchar? Могу набросать примерчик через ADO.NET если нужно? Вопрос еще такой, а почему не пользуетесь какой то ORM? Не заморачивались бы со вставкой тогда.
            Цитата Craft @
            Цитата Ali002 @
            а никак уже просто во всех таблицах отображать нужно это поле и связь идет по нему

            Получилось побороть varchar? Могу набросать примерчик через ADO.NET если нужно? Вопрос еще такой, а почему не пользуетесь какой то ORM? Не заморачивались бы со вставкой тогда.

            получилось побороть! но примерчик ваш тож не помешает, не понял какое еще ORM , проблема у меня была в кодировке я все исправил :D
              Примерчик вставки Varchar поля.
              ExpandedWrap disabled
                private void Customer(string name)
                        {
                            var sql = "INSERT INTO Customers([Name]) VALUES(@Name);";
                            using(var connection = new SqlConnection())
                            {
                                connection.ConnectionString = ConfigurationManager.ConnectionStrings["myconnection"].ConnectionString;
                                connection.Open();
                                using(var command = new SqlCommand(sql, connection))
                                {
                                    command.Parameters.AddWithValue("@Name", name); //Add Varchar feild
                                    command.ExecuteNonQuery();
                 
                                    command.Parameters.Clear();
                                }
                            }
                        }

              Что такое ORM можете посмотреть презентацию ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
                Цитата Craft @

                Спасибо, изучаю ваш материальчик=)

                Добавлено
                Цитата Craft @

                Пользуясь случаем, можно задать вопрос не по теме, вот у меня есть запросик такой вывести все данные по таблице1, связанной с таблицей 2, где у таблицы 2 поле checkbox галочкой отмечено. Вот этот запрос работает у меня вот он:
                ExpandedWrap disabled
                  SELECT zayavka.id_zayavki, zayavka.tema_obucheniya, zayavka.name_kompleks, zayavka.period_obucheniya_S, zayavka.period_obucheniya_Do, zayavka.istoch_finansir, zayavka.FIO_ispolnitel, zayavka.data_postupl,
                                    zayavka.cel_obuch, zayavka.Ojid_rezult, zayavka.Osob_usl, zayavka.stoim_obuch, zayavka.mesto_proved_zan, analiz.otrabotano, zayavka.Id_company
                  FROM     zayavka INNER JOIN
                                    analiz ON zayavka.id_zayavki = analiz.id_zayavki
                  WHERE  (analiz.otrabotano = @znah)
                в инициализации формы я объявляю этот запрос так
                ExpandedWrap disabled
                   private void Zayav_Dogovor4_Load(object sender, EventArgs e)
                          {
                          this.zapros_proverka_otrabotkiTableAdapter.zapros_proverka_otrabotki(this.analyseDataSet.zapros_proverka_otrabotki, true);
                теперь мне нужо аналогично только со значением False эого поля checkbox , пишу тож самое тока с False - пустая таблица, что то не так?
                  Цитата Ali002 @
                  теперь мне нужо аналогично только со значением False эого поля checkbox , пишу тож самое тока с False - пустая таблица, что то не так?

                  Сложно сходу сказать. Недостаточно данных. Ваш код сложно читать, так как не хватает всех условий. Если я вас правильно понял то возьмите два отдельных DataSet в один загрузите с условием когда ваша галочка в true, в другое когда false. И попробуйте называть ваши контролы более осмысленно. Сложно осилить условие которое вы написали.
                  Пример zapros_proverka_otrabotkiTableAdapter -> RequestCheckTableAdapter
                  analyseDataSet -> AnylizeDataSet
                  zapros_proverka_otrabotki -> RequestCheckDone
                  Так читать будет вам самим легче.
                    Цитата Craft @
                    Цитата Ali002 @
                    теперь мне нужо аналогично только со значением False эого поля checkbox , пишу тож самое тока с False - пустая таблица, что то не так?

                    Сложно сходу сказать. Недостаточно данных. Ваш код сложно читать, так как не хватает всех условий. Если я вас правильно понял то возьмите два отдельных DataSet в один загрузите с условием когда ваша галочка в true, в другое когда false. И попробуйте называть ваши контролы более осмысленно. Сложно осилить условие которое вы написали.
                    Пример zapros_proverka_otrabotkiTableAdapter -> RequestCheckTableAdapter
                    analyseDataSet -> AnylizeDataSet
                    zapros_proverka_otrabotki -> RequestCheckDone
                    Так читать будет вам самим легче.

                    Может быть с chekBox по другому проверку на не Checked надо делать потому что с checked он работает
                      Цитата Ali002 @
                      Может быть с chekBox по другому проверку на не Checked надо делать потому что с checked он работает

                      Это легко проверить. Вы же ваш код можете запустить на самой базе данных. Подставьте у ваш запрос 1 и 0 и проверьте те значения которые вам возвращает запрос. Может у вас просто нет данных которые удовлетворяют запросу. Реально самый простой способ проверить, выполнить запрос непосредственно на самой таблице с которой выбираете данные.
                      Сообщение отредактировано: Craft -
                        Я подставлял, когда писал 1 то выводились правильные значения у которых я отметил chekbox checked, а когда нолис ставил то вообще ничего не выводил пустая таблица, хотя у меня там много значений где я не отметил chekbox в checked

                        Добавлено
                        Цитата Craft @

                        На счет ОРМ я использую Entity Framework, со вставкой парился из за того что не поставил cp1251 для каждого атрибута в базе( забыл. А так то Framework рулит, только я в нем новичок)
                          А поле otrabotano is NULLable? Если да, то провека на значения Да и Нет возврасает не все записи.
                          Попробый исполни запрос без условия WHERE (analiz.otrabotano = @znah)
                            Цитата MIF @
                            А поле otrabotano is NULLable? Если да, то провека на значения Да и Нет возврасает не все записи.
                            Попробый исполни запрос без условия WHERE (analiz.otrabotano = @znah)

                            ТОгда выдается такое исключение: Не удалось включить ограничения. По меньшей мере одна строка содержит значение, нарушающее ограничения по отсутствию пустых значений, уникальности или внешним ключам.и да поле отработано null ( в базе тип поля BIT)
                            Сообщение отредактировано: Ali002 -
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0365 ]   [ 16 queries used ]   [ Generated: 27.04.24, 10:23 GMT ]