k@ran Ответов: 2

как вставить дату рождения из asp.net страница в sql server 2008


я использую

str="insert into date values('"+TextBox1.Tex)+ "')";
ad=new SqlDataAdapter (str,CT.connect());
       dt = new DataTable();
       ad.Fill(dt);


запрос .CS страницы, но это дает сообщения об ошибке..

[no name]

Вам не кажется, что сообщение об ошибке было бы большим подспорьем? Может быть, потому, что в текстовом поле нет свойства Tex).

2 Ответов

Рейтинг:
11

StianSandberg

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

Пример:

DateTime date;

// Try parse TextBox1.Text to a valid DateTime
if(DateTime.TryParse(TextBox1.Text, out date)){

    // Successfully converted :)
   
    // Add it to database
    using (SqlConnection conn = new SqlConnection("ConnectionString"))
    {
        conn.Open();
        using (SqlCommand cmd = new SqlCommand("INSERT INTO myTable (myDateColumn) VALUES (@myDateValue)", conn))
        {
            // Add date as a parameter (it's a DateTime, not a string)
            cmd.Parameters.AddWithValue("@myDateValue", date);
            cmd.ExecuteNonQuery();
        }
        conn.close();
    }
}
else{
   // Tell the user to enter a proper date
}


Надеюсь, это поможет..


Рейтинг:
0

OriginalGriff

Не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы. Это, вероятно, решит непосредственную проблему и сделает ваш сайт намного безопаснее.

Также рассмотрите возможность перехода от текстового поля - где у вас нет контроля над форматом даты или даже символами, которые вводит пользователь, - к элементу управления DateTimePicker или Calender, который вместо этого будет возвращать значение DateTime.

Попробуйте простой способ:

using (SqlConnection con = new SqlConnection(strConnect))
    {
    con.Open();
    using (SqlCommand com = new SqlCommand("INSERT INTO myTable (myColumn1, myColumn2) VALUES (@C1, @C2)", con))
        {
        com.Parameters.AddWithValue("@C1", myValueForColumn1);
        com.Parameters.AddWithValue("@C2", myValueForColumn2);
        com.ExecuteNonQuery();
        }
    }


k@ran

мне нужно решение для свидания

k@ran

@OriginalGriff :

Ваш код отлично подходит для обычных полей, таких как integer, string,..Что делать, если мне нужно вставить дату из текстового поля

OriginalGriff

Преобразовать его в тип datetime, используя синтаксический анализ, метод tryparse, или методы метод tryparseexact.