powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка преобразования даты или времени из символьной строки
50 сообщений из 50, показаны все 2 страниц
Ошибка преобразования даты или времени из символьной строки
    #39963381
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу сразу прощения если вопрос покажется кому-то примитивным, опыта пока маловато, а на просторах инета пока найдёшь что-то действительно нужное столько ненужного найдёшь, что голова кругом.

Вообщем вопрос в названии, при компиляции выдаёт, если проигнорить и всё равно запустить то работает, смысл простой, есть грид и комбик, в комбике выбираем дату и грид перестаривается:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public string conn = "Data Source=Abon;Initial Catalog=Abon;Integrated Security=True";

        private void Form1_Load(object sender, EventArgs e)
        {
            string query = "SELECT DateV FROM Dop2018 group by DateV order by DateV";
            SqlDataAdapter da = new SqlDataAdapter(query, conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            tDateV.DataSource = ds.Tables[0];
            tDateV.DisplayMember = "DateV";

            query = "SELECT * FROM Dop2018 where DateV=convert(date,'" + tDateV.Text + "',104)";
            SqlDataAdapter daGrid = new SqlDataAdapter(query, conn);
            DataSet dsGrid = new DataSet();
            daGrid.Fill(dsGrid);
            GridDop2018.DataSource = null;
            GridDop2018.DataSource = dsGrid.Tables[0];
        }

        private void tDateV_SelectedIndexChanged(object sender, EventArgs e)
        {
            string query = "SELECT * FROM Dop2018 where DateV=convert(date,'" + this.Text + "',104)";
            SqlDataAdapter daGrid = new SqlDataAdapter(query, conn);
            DataSet dsGrid = new DataSet();
            daGrid.Fill(dsGrid);
            GridDop2018.DataSource = null;
            GridDop2018.DataSource = dsGrid.Tables[0];

        }



Модератор: Учимся использовать тэги оформления кода - FAQ
Красным выделил строку где возникает данная ошибка
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963383
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делай сразу нужную строку даты в формате YYYYMMDD и подставляй, но намного правильней делать это через SQL параметр с нужным типом данных, так как это защита от инъекций
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963387
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, Там проблема даже не с тем что он преобразовать не может, если обратитет внимание на Load всё работает нормально, а вот когда в коде меняешь значение здесь ругается, типа он на этапе компиляции пытается туда что-то подставить, но у него не получается это сделать, а явно я указать дату не могу, весь смысл как раз в том чтобы дату выбирали из списка и весь грид перестраивался. В целом то код работает, но вот почему ругается на этапе сборки и как ему объяснить что там обязательно будет значение и оно его точно устроит, пока понять не могу
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963390
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где сама ошибка компиляции? И если ошибка на выделенной строке, то причем тут вообще вопросы про дату?
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963398
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, То есть вы не поняли, ок, давайте распишу подробнее

Выше я написал всего 2 метода, первый происходит при загруке формы, а второй при изменении значения в ComboBox

Код прям один в один, но именно в изменение компилятор не может или не хочет подставлять значение и поэтому даёт ошибку и я не могу понять, как же ему объяснить чтобы он понимал что там обязательно будет нужное значение и при том при всём в методе Load компилятор всё устраивает, хотя там точно такой же код
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963456
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй в текстовое поле c датой вбить что-нибудь типа:

Код: sql
1.
; drop database <имя БД> --


все тут же должно заработать
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963475
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelOKES
давайте распишу подробнее
Подробнее не увидел. Какая конкретно ошибка компиляции? Или компилятор прям так и пишет "не хочу подставлять значение"?
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963480
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Попробуй в текстовое поле c датой вбить что-нибудь типа:
У него там не текстовое поле, походу, он обрадается к свойству Form1.Text в котором лежит "Form1", после чего получает исключение, а вовсе не ошибку компиляции, как утверждает
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963486
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
после чего получает, исключение а вовсе не ошибку компиляции, как утверждает

Возможно у него на форме объявлено свойство или поле "Text". А если это текстбокс, то строка соберется с его значением "Text.ToString()" - скорее всего подставится что-нибудь типа "System.Windows.Forms.TextBox" или я не знаю, как там для него ToString() реализован. Ошибки компиляции не будет по любому - на сервер уйдет корявый запрос, что и происходит.

Но, лично я вообще против, чтобы автору как-либо помогать, пока он не перестанет собирать SQL конкатенацией вместо использования параметров.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963495
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Возможно у него на форме объявлено свойство или поле "Text"
Оно в базовом классе Control объявлено ))

fkthat
Но, лично я вообще против, чтобы автору как-либо помогать, пока он не перестанет собирать SQL конкатенацией вместо использования параметров.
Пусть сначала хотя бы разберется, чем отличается компиляция от выполнения программы.
Хотя, судя по всему, человек пришел с какого-то скриптового языка, скорее всего с яваскрипта, отсюда такое непонимание (добро пожаловать в мир статического анализа и строгой типизации) ))

А потом дашь ему ссылку на статью про инъекции
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963496
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значение из текстбокса не соответствует маске 104 SQL-ной функции convert, вот и всё. За конкатенацию вместо параметров бить.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963501
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
А потом дашь ему ссылку на статью про инъекции

Там не только инъекции, там ещё нюансы производительности - при новом значении параметра, отличного от предыдущего, на сервере будет рекомпиляция запроса вместо получения плана из кэша. Если запрос сложный, или часто вызывается, это может вылиться в ощутимый удар по производительности. На одном моем бывшем месте работы именно ввиду этого нюанса за конкатенацию депремировали :)
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963502
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
Shocker.Pro
А потом дашь ему ссылку на статью про инъекции

Там не только инъекции, там ещё нюансы производительности - при новом значении параметра, отличного от предыдущего, на сервере будет рекомпиляция запроса вместо получения плана из кэша. Если запрос сложный, или часто вызывается, это может вылиться в ощутимый удар по производительности. На одном моем бывшем месте работы именно ввиду этого нюанса за конкатенацию депремировали :)
А ещё за "SELECT *" по рукам бить.... я ж говорю, дайте человеку сначала в основах разобраться
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963505
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
Значение из текстбокса не соответствует маске 104 SQL-ной функции convert, вот и всё. За конкатенацию вместо параметров бить.
Еще раз, там нет текстбокса, он берет значение из this.Text
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963506
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
при новом значении параметра, отличного от предыдущего, на сервере будет рекомпиляция запроса вместо получения плана из кэша.

Давно уже не будет. Если еще не с 2005, то с 2008 версии это точно, сиквел (если у автора сиквел) умеет сам перед компиляцией перестраивать запрос, заменяя литералы на параметры.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963507
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
он берет значение из this.Text

Я про это и забыл, но мне простительно, я формсами вообще не занимаюсь. Значит там будет выполняться что-нибудь типа
Код: sql
1.
SELECT * FROM Dop2018 where DateV=convert(date, 'Form1',104)
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963545
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблему решил, просто добавил проверку на null

всем спасибо за участие, очень радует такая активность, это значит что я правильно выбрал направление, будем копать дальше
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963548
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Shocker.Pro
он берет значение из this.Text

Я про это и забыл, но мне простительно, я формсами вообще не занимаюсь. Значит там будет выполняться что-нибудь типа
Код: sql
1.
SELECT * FROM Dop2018 where DateV=convert(date, 'Form1',104)



Ну я же вроде и выбрал топик WinForms или что-то нет?

авторУ него там не текстовое поле, походу, он обрадается к свойству Form1.Text в котором лежит "Form1", после чего получает исключение, а вовсе не ошибку компиляции, как утверждает

Ну я же вроде выше описал, что есть грид и комбик, та не сильно много букв было в самом вопросе, можно было бы и прочитать
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963567
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вангование
Автор сделал свой контрол, напрямую унаследовав его от комбобокса, не учел работу контрола в дизайн-тайме. но запихнув внутрь работу с БД. А приведенный в первом посте код на самом деле относится к разным классам, а не к одному, о чем автор сказать забыл, отсюда разночтение.
В итоге, ошибку он получает в дизайнере форм (в общем, это не ошибка компиляции, а ошибка рантайма самого контрола в дизайнере формы), потому что не проверяет, в дизайн-тайме или в ран-тайме запускается код контрола.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963578
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Автор сделал свой контрол, напрямую унаследовав его от комбобокса, не учел работу контрола в дизайн-тайме. но запихнув внутрь работу с БД.

Жесть прямо какая-то... Оказывается, что сиквельный инжекшен это тут еще не самое страшное.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963596
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Давно уже не будет. Если еще не с 2005, то с 2008 версии это точно, сиквел (если у автора сиквел) умеет сам перед компиляцией перестраивать запрос, заменяя литералы на параметры.

Странно.
Код: sql
1.
2.
3.
use master
go
dbcc freeproccache


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
public static void Main()
{
  using (var cnn = new SqlConnection(@"Data Source=.;Initial Catalog=master;Integrated Security=True"))
  {
    cnn.Open();
    using (var cmd = new SqlCommand("select object_id from sys.all_objects where name=@name", cnn))
    {
      var p = cmd.Parameters.Add("@name", SqlDbType.NVarChar, 128);
      p.Value = "sp_addrolemember";
      using (cmd.ExecuteReader()){ }
    }
    using (var cmd = new SqlCommand("select object_id from sys.all_objects where name=@name", cnn))
    {
      var p = cmd.Parameters.Add("@name", SqlDbType.NVarChar, 128);
      p.Value = "sp_droprolemember";
      using (cmd.ExecuteReader()) { }
    }
    using (var cmd = new SqlCommand("select object_id from sys.all_objects where name=@name", cnn))
    {
      var p = cmd.Parameters.Add("@name", SqlDbType.NVarChar, 128);
      p.Value = "sp_helplogins";
      using (cmd.ExecuteReader()) { }
    }
    using (var cmd = new SqlCommand("select object_id from sys.all_objects where name='sp_addsrvrolemember'", cnn))
    {
      using (cmd.ExecuteReader()) { }
    }
    using (var cmd = new SqlCommand("select object_id from sys.all_objects where name='sp_dropsrvrolemember'", cnn))
    {
      using (cmd.ExecuteReader()) { }
    }
  }
}


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
  ecp.refcounts,
  ecp.usecounts,
  ecp.cacheobjtype,
  ecp.objtype,
  st.[text]
from sys.dm_exec_cached_plans ecp 
cross apply sys.dm_exec_sql_text(ecp.plan_handle) st
where st.dbid=db_id()
select @@version;



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
refcounts   usecounts   cacheobjtype    objtype     text
----------- ----------- --------------- ----------- ----------------------------------------------------------------------------------
2           1           Compiled Plan   Adhoc       select ecp.refcounts, ecp.usecounts, ecp.cacheobjtype, ecp.objtype, st.[text] ....
2           1           Compiled Plan   Adhoc       select object_id from sys.all_objects where name='sp_dropsrvrolemember'
2           1           Compiled Plan   Adhoc       select object_id from sys.all_objects where name='sp_addsrvrolemember'
2           3           Compiled Plan   Prepared    (@name nvarchar(128))select object_id from sys.all_objects where name=@name

(4 row(s) affected)
-----------------------------------------------------------------------------------
Microsoft SQL Server 2014 (SP2-CU17-GDR) (KB4505419) - 12.0.5659.1 (X64) 
  May 24 2019 19:09:40 
  Copyright (c) Microsoft Corporation
  Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


(1 row(s) affected)
Т.е. на 5 запросов из клиентского приложения - 3 кэшированных плана. Именно 3, не 5, и не 1.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963610
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
dbcc freeproccache

use Northwind

select * from Categories where CategoryID = 1
select * from Categories where CategoryID = 2

select t.[text] from sys.dm_exec_query_stats s
  cross apply  sys.dm_exec_sql_text(s.plan_handle) t


Крайний запрос возвращает:

Код: sql
1.
(@1 tinyint)SELECT * FROM [Categories] WHERE [CategoryID]=@1


Ктулху его знает, но, как видишь, для user tables работает. Лучше у проф. ДВАшников спросить - я все-таки по этой теме просто "за что купил, за то и продаю".
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963626
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Ктулху его знает, но, как видишь, для user tables работает.

Тут получается такая вот петрушка:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
public static void Main()
{
  using (var cnn = new SqlConnection(@"Data Source=.;Initial Catalog=master;Integrated Security=True"))
  {
    cnn.Open();
    using (var cmd = new SqlCommand("SELECT [object_id] FROM [sys].[all_objects] WHERE [object_id]=@1", cnn))
    {
      var p = cmd.Parameters.Add("@1", SqlDbType.TinyInt);
      p.Value = 5;
      using (cmd.ExecuteReader()) { }
    }
    using (var cmd = new SqlCommand("SELECT [object_id] FROM [sys].[all_objects] WHERE [object_id]=@1", cnn))
    {
      var p = cmd.Parameters.Add("@1", SqlDbType.TinyInt);
      p.Value = 6;
      using (cmd.ExecuteReader()) { }
    }
    using (var cmd = new SqlCommand("SELECT [object_id] FROM [sys].[all_objects] WHERE [object_id]=@1", cnn))
    {
      var p = cmd.Parameters.Add("@1", SqlDbType.TinyInt);
      p.Value = 7;
      using (cmd.ExecuteReader()) { }
    }
    using (var cmd = new SqlCommand("select object_id from sys.all_objects where object_id=8", cnn))
    {
      using (cmd.ExecuteReader()) { }
    }
    using (var cmd = new SqlCommand("select object_id from sys.all_objects where object_id=9", cnn))
    {
      using (cmd.ExecuteReader()) { }
    }
  }
}


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
  ecp.refcounts,
  ecp.usecounts,
  ecp.cacheobjtype,
  ecp.objtype,
  st.[text]
from sys.dm_exec_cached_plans ecp 
cross apply sys.dm_exec_sql_text(ecp.plan_handle) st
where st.dbid=db_id()



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
refcounts   usecounts   cacheobjtype    objtype     text
----------- ----------- --------------- ----------- ---------------------------------------------------------------------------------
2           2           Compiled Plan   Adhoc       select ecp.refcounts, ecp.usecounts, ecp.cacheobjtype, ecp.objtype, st.[text] ...
2           1           Compiled Plan   Adhoc       select object_id from sys.all_objects where object_id=9
2           1           Compiled Plan   Adhoc       select object_id from sys.all_objects where object_id=8
4           2           Compiled Plan   Prepared    (@1 tinyint)SELECT [object_id] FROM [sys].[all_objects] WHERE [object_id]=@1
2           3           Compiled Plan   Prepared    (@1 tinyint)SELECT [object_id] FROM [sys].[all_objects] WHERE [object_id]=@1

(5 row(s) affected)
т.е. да, вижу, что в итоге запрос отпрепарировался, и использовался параметризованный план. Однако к этому мы имеем ещё 2 записи с типом Adhoc, которые тоже закэшировались. И это может быть проблемой - кэш планов от таких Adhoc распухает, ему начинает не хватать ресурсов - тут вот человек разбирался с этой проблемой.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963653
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Такое подозрение, что это связано либо с тем, что sys.all_objects это вьюха, либо с тем, что она системная.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963657
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Да, попробовал, по ходу дела, на вьюхах это не срабатывает - для каждого литерального значения план в кеше другой.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963842
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Сон Веры Павловны,

Да, попробовал, по ходу дела, на вьюхах это не срабатывает - для каждого литерального значения план в кеше другой.

Unsafe plan. Нашел, где всё это подробно разжевывается - вот здесь (раздел Ad hoc in action), ну, и в оф. документации . На сервере, где гонялись вышеприведенные примеры, optimize for ad hoc workload=0, у базы Parametrization = Simple.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963852
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
fkthat
Сон Веры Павловны,

Да, попробовал, по ходу дела, на вьюхах это не срабатывает - для каждого литерального значения план в кеше другой.

Unsafe plan. Нашел, где всё это подробно разжевывается - вот здесь (раздел Ad hoc in action), ну, и в оф. документации . На сервере, где гонялись вышеприведенные примеры, optimize for ad hoc workload=0, у базы Parametrization = Simple.

Да, все это конечно любопытно, но малоактуально - никто в здравом уме не станет в приложении собирать запрос для сервера конкатенацией строк вместо передачи параметров.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963857
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Да, все это конечно любопытно, но малоактуально - никто в здравом уме не станет в приложении собирать запрос для сервера конкатенацией строк вместо передачи параметров.


И что плохого вы видите в том чтобы собрать строку самому без добавления параметров? Мне лично проще и быстрее собрать строку, чем прописывать и добавлять все нужные параметры, кода километр и выхлопа никакого
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963873
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelOKES
И что плохого вы видите в том чтобы собрать строку самому без добавления параметров? Мне лично проще и быстрее собрать строку, чем прописывать и добавлять все нужные параметры, кода километр и выхлопа никакого

Мда... Века пройдут, а сиквел инжекшен все еще будет живее всех живых :))
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963874
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelOKES
И что плохого вы видите в том чтобы собрать строку самому без добавления параметров? Мне лично проще и быстрее собрать строку, чем прописывать и добавлять все нужные параметры, кода километр и выхлопа никакого
Например, всё хорошо, пока формат даты на сервере и на клиенте совпадает. Даже сейчас попробуй через панель управления выставить американскую локализацию и убедиться, что твой код в принципе продолжает работать и не путает месяц с годом в датах типа 02/03/2020.
Про строки - нужно будет думать об экранировании ограничителей (кавычек или апострофов)
Про числа, нужно думать про правильную интерпретацию десятичного разделителя и разделителей тысяч
Про время - правильную интерпретацию времени суток при формате am/pm
....
В общем, тебя сразу предупреждают о граблях, но ты предпочитаешь на все сначала наступить, видимо
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963879
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Например, всё хорошо, пока формат даты на сервере и на клиенте совпадает. Даже сейчас попробуй через панель управления выставить американскую локализацию и убедиться, что твой код в принципе продолжает работать и не путает месяц с годом в датах типа 02/03/2020.
Кстати, обязательно должно перестать работать, так как в запросе принудительная конвертация из формата 104. То есть программа рассчитана на работу только у пользователей с русской локализацией.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963892
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
AngelOKES
И что плохого вы видите в том чтобы собрать строку самому без добавления параметров? Мне лично проще и быстрее собрать строку, чем прописывать и добавлять все нужные параметры, кода километр и выхлопа никакого
Например, всё хорошо, пока формат даты на сервере и на клиенте совпадает. Даже сейчас попробуй через панель управления выставить американскую локализацию и убедиться, что твой код в принципе продолжает работать и не путает месяц с годом в датах типа 02/03/2020.
Про строки - нужно будет думать об экранировании ограничителей (кавычек или апострофов)
Про числа, нужно думать про правильную интерпретацию десятичного разделителя и разделителей тысяч
Про время - правильную интерпретацию времени суток при формате am/pm
....
В общем, тебя сразу предупреждают о граблях, но ты предпочитаешь на все сначала наступить, видимо


больше 20 лет запросы пишу в строке и никаких траблов, про параметизированный запрос я почитал, преимуществ как-то не особо увидел, наоборот только разрастается код, хотя это наверное просто как стиль программирования, кому то нравится так, кому этак, а в целом-то разницы никакой.
А про формат даты я как-то в самом начале проектирования думаю и принудительно ставлю нужный мне формат, вообще никогда проблем не было, ну и как я понял сам проект мне сразу скажет если что-то я не то поставлю (уж черезчур умная машина стала, только вот черезчур слишком, не верит она программисту что тут всё будет хорошо, ан нет, убеди его в этом ))))
Спасибо конечно за советы, но пока практического улучшения я не вижу, не очень люблю когда код раздут в разы, очень нравится минимизировать и не усложнять без надобности, чем прощё, тем лучше
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963899
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelOKES
больше 20 лет запросы пишу в строке и никаких траблов

Это пока кто-нибудь не догадался на 1 апреля тебе какой-нибудь ";delete from blablabla --" в текстбоксе вбить.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963904
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
AngelOKES
больше 20 лет запросы пишу в строке и никаких траблов

Это пока кто-нибудь не догадался на 1 апреля тебе какой-нибудь ";delete from blablabla --" в текстбоксе вбить.


Ну что-то вы совсем какую-то дичь пишите ))) такого текстбокса никто делать точно не будет ))))
Или вы буквально поняли, что на форме один текстбокс и пользователь вручную пишет запрос )))) смешной

В целом я ещё разбираюсь, жаль конечно инфы или примеров нормальных нет, или полный примитив или ручное заполнение, приходится каждое свойство и метод просматривать и читать про него
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963911
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите лучше, мне чтобы элемент связывать с БД, на каждый элемент надо создавать отдельное подключение?
Самый упрощённый вариант, это ComboBox и Grid, оба элемента используют одну и ту же таблицу, только для ComboBox надо использовать только одну колонку и она же будет являться фильтром для отображения данных, можно ли это всё завязать в конструкторе с одним подключением или на каждый элемент нужен свой запрос, просто никак не могу найти где мне можно изменить запрос или хотя бы фильтр отображения
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963918
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
AngelOKES
больше 20 лет запросы пишу в строке
Вероятно тут ошибка. Не 20 лет, а 20 дней
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963922
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Весёлые тут ребята и очень отзывчивые
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963962
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelOKES
В целом я ещё разбираюсь

Заметно.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39963975
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Да, все это конечно любопытно, но малоактуально - никто в здравом уме не станет в приложении собирать запрос для сервера конкатенацией строк вместо передачи параметров.

Там есть интересная информация между строк. Из неё следуют любопытные и не совсем навскидку очевидные выводы - например, о том, что для строковых параметров в общем случае не нужно использовать метод AddWithValue, т.к. он для параметра устанавливает размер, равный размеру строки параметра. Если один и тот же запрос вызывается много раз, и длины параметров разные, то для каждого вызова с не встречавшейся ранее длиной параметра будет новая запись в кэше планов. Параметризованная (prepared), но отдельная.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964050
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удивительное рядом, человек 20 лет программирует и не сталкивался с проблемами преобразования типов в строку и обратно, особенно дату и время, пишет о том как замечательно колхозить запросы и т.д.
после 20 лет программирования, это вы должны нас учить, как и что делать. А по факту, я бы даже года не дал.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964069
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
Из неё следуют любопытные и не совсем навскидку очевидные выводы - например, о том, что для строковых параметров в общем случае не нужно использовать метод AddWithValue, т.к. он для параметра устанавливает размер, равный размеру строки параметра. Если один и тот же запрос вызывается много раз, и длины параметров разные, то для каждого вызова с не встречавшейся ранее длиной параметра будет новая запись в кэше планов. Параметризованная (prepared), но отдельная.

А вот это вот реально интересно. Надо будет обязательно на выходных отресерчить, как себя EF ведет в этом плане (ADO.NET меня слабо интересует). Записал себе в TODO :)
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964071
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
удивительное рядом, человек 20 лет программирует и не сталкивался с проблемами преобразования типов в строку и обратно, особенно дату и время, пишет о том как замечательно колхозить запросы и т.д.
после 20 лет программирования, это вы должны нас учить, как и что делать. А по факту, я бы даже года не дал.


На Visual Studio второй день сижу, до этого просто в других языках писал, там гораздо всё проще и в построении запросов и в отображении данных и в привязках и в обновлении, ну или просто надо перестроить свои мозги, вспоминаю сразу чистый assembler, вот там реально надо мыслить совсем по-другому. Мне бы сейчас просто понять принцип как всё тут устроено, а дальше я уже сам...
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964083
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelOKES
Мне бы сейчас просто понять принцип как всё тут устроено
Принцип, как тут всё устроено уже сказали - делать через параметры.
Тут, скорее, отсутствует желание слушать.

Ну и тащить внутрь контрола прямое взаимодействие с СУБД - это, конечно, тоже из 20-летнего опыта проистекает.
SOLID, Layers - не, не слышали. ЯВУ? Ассемблеровские подходы - наше всё!
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964220
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В топку WinForms, как вспомню. сердце кровью обливается, а до недавнего времени были еще легаси проекты, с WinForms, формочки хрен знает каких годов, не открывающиеся в дизайнере по причине того, что использую плаформенные компоненты из говна и палок, каждый по 2-4к строк кода. при этом, всё это вынуждает говнякать точно так же, ведь сделать "по хорошему" в ентерпрайз легаси будет еще большей тупостью.

на счет 20 лет, вы бы так и писали, что 20 лет вы занимались чем то другим, тут экстрасенсов нет и такие заявления выглядят сомнительно. Программирование имеет очень прикладной характер, начиная от языков, заканчивая парадигмами и прочим.
Советую прислушаться к мнению тех, кто вам подсказал. Такой подход, который вы используйте в данный момент хорош для того. чтоб сделать макет приложения из говна и палок за максимально быстрый срок, или сделать пример для начинающего и т.д.,
этот метод рабочий, но он создан, чтоб говнякать код, по типу: "И так сойдет".
+ в 2020 году, не стоит разрабатывать проект с нуля на технологии 20 летней давности, есть куча других технологий, если нужно чистый фреймфорк есть WPF, но он не блещет молодостью, но явно поновее (+ теперь есть net.core). Но боюсь вам будет в тройне сложнее, перейти к парадигме декларативного программирования, но попробовать точно стоит.
через еще 20 лет, вы окажитесь в прошлом на 40 лет.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964874
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
Советую прислушаться к мнению тех, кто вам подсказал.


Да особых подсказок-то и не было, кроме как делать строку параметизированной, в своё время как только появился Visual Studio уже ознакомился с этой технологией, 2006 год кажется (хотя могу немного ошибиться), преимуществ я как не видел, так и не вижу, но не в этом дело. Во-основном тут просто срач идёт, впрочем как на любом русско-язычном сайте, можно пойти на пиндосовские форумы или немецкие, но сложно грамотно перевести свой вопрос, чтобы меня действительно поняли. Примеров жаль вообще нет, то что предлагают различные самоучители очень примитивные и практически не решают никаких задач. Основные задачи это организовать работу с БД, чтение, отобображение, взаимодействие с офисными программами и есть проекты связанные с графикой, если есть где хорошая книга или ресурс, где кроме как выводить "Hello World", будет что-то по-серьёзнее
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964911
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelOKES
Да особых подсказок-то и не было
Подсказка о чём?
При 20-летнем опыте ты не смог поставить точку останова и увидеть, чему у тебя равна переменная query? При 20-летнем опыте ты не смог нормально привести код, надергав куски из разных контекстов, и описать кейс возникновения проблемы? При 20-летнем опыте ты не можешь отличить ошибку компиляции от ошибки рантайма? Ну тут сложно подсказывать, остается обсуждать околокодовые вопросы и ждать, когда соизволишь добавить подробностей.
AngelOKES
но сложно грамотно перевести свой вопрос, чтобы меня действительно поняли.
вот-вот. Сложно даже на русском оказалось сформулировать.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964928
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
чему у тебя равна переменная query?

Почему не могу, могу, вопрос то мой был не в этом, видать совсем читать лень, лишь бы плюнуть на человека "сверху"

Shocker.Pro
надергав куски из разных контекстов, и описать кейс возникновения проблемы?

Да не нашёл откуда дёргать, нет у меня ни одного примера и тут на форуме ничего найти не смог, как будто с базой никто и не работает

Shocker.Pro
не можешь отличить ошибку компиляции от ошибки рантайма?

А это-то тут при чём? Написал неправильный термин и всё можно в морду плевать?

Shocker.Pro
Сложно даже на русском оказалось сформулировать

Да куда уж проще-то? Ну судя по коментарием мало кто себя вообще утруждает полным прочтением

Вопрос-то был очень просто донельзя просто, ещё больше я его упростить не мог, да и решение я нашёл через полчаса, просто надеялся что тут есть хотя бы один-два адекватных человека и прежде чем плеваться, направят или дадут пример и да я уверен, плевки сейчас и дальше полетят, о том какой я косой и хромой и как это я не могу догадаться о том, о чём тут даже писать впадлу, видать свои тут потом заклюют ))))

Удачного вам дня, думаю тему можно закрыть, нет смысла и дальше тут срать, всем добра!!!
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964946
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelOKES
Почему не могу, могу
могу, но писать в изначальном сообщении не буду - ребята умные, сам и догадаются.
AngelOKES
Да не нашёл откуда дёргать
Поэтому привел свой код, не объясняя, что он находится в разных классах. А что тут такого, это же не имеет значения, не правда ли )
AngelOKES
А это-то тут при чём? Написал неправильный термин и всё можно в морду плевать?
действительно, а зачем писать правильные термины. Подумаешь, что это влияет на понимание вопроса, неважно, тут все телепаты. Зато потом можно будет обвинить отвечающих, что вопрос не читали! )
AngelOKES
Да куда уж проще-то?
действительно проще некуда, напишу всякой ерунды, а важную инфу умолчу, а то слишком сложно получится.


AngelOKES
Вопрос-то был очень просто донельзя просто, ещё больше я его упростить не мог, да и решение я нашёл через полчаса, просто надеялся что тут есть хотя бы один-два адекватных человека и прежде чем плеваться, направят или дадут пример и да я уверен, плевки сейчас и дальше полетят, о том какой я косой и хромой и как это я не могу догадаться о том, о чём тут даже писать впадлу, видать свои тут потом заклюют ))))
В общем, все отвечающие тупые, только автор вопроса на коне, сам спросил, сам решил (неверно решил, кстати, нужно не проверку на нулл ставить, а проверять, не находится ли контрол в дизайн-тайме, и уж тем более не коннектиться внутри контрола к БД). Удачи.
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964969
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, Какой вы умный, молодец!!!!
...
Рейтинг: 0 / 0
Ошибка преобразования даты или времени из символьной строки
    #39964971
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelOKES
Shocker.Pro, Какой вы умный, молодец!!!!
Извините! Это моя слабость!
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка преобразования даты или времени из символьной строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]