Я не знаю, как вставить для доступа к базе данных ввода типа = "дата", пожалуйста, - PullRequest
0 голосов
/ 19 октября 2018

У меня есть веб-сайт, и я сделал кнопку asp: и добавил текстовое поле asp: внутри базы данных, и это сработало.Но когда я попробовал вставить, это не работает для меня.Я пытаюсь записать вставку date.text в свою базу данных в aspx.cs, и он находит идентификатор этого, потому что это ввод, а не asp: текстовое поле.

<td class="style4">
    תאריך לידה:
</td>
<td class="style3">
    <input id="date" type="Date" min="1905-01-01" max="2019-01-01" value="2018-01-01"/>
</td>
OleDbConnection connection = new OleDbConnection();
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\WebSites\MyWebsite\DataBase.mdb;Persist Security Info=False;";
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "insert into users (FirstName, LastName, Place, Email, UserName, Birthday) values('" + firstname.Text + "','" + lastname.Text + "','" + PlaceList.Text + "','" + MyEmail.Text + "','" + AccountText.Text + "','" + date.Text + "')";
command.ExecuteNonQuery();

И я получаю сообщение об ошибке:

Ошибка 29 Имя «дата» не существует в текущем контексте F:\ WebSites \ MyWebsite \ Register.aspx.cs 27 242 F: \ WebSites \ MyWebsite \

Не удается найти этот идентификатор.

Пожалуйста, кто-нибудь может помочь мне решить его?(

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

В вашем коде вы можете получить элементы формы по имени, а не по идентификатору, поэтому присвойте элементу ввода имя:

<input id="date" name = "date" type="Date" min="1905-01-01" max="2019-01-01" value="2018-01-01"/>
                 ^^^^^^^^^^^^

, тогда к нему можно получить доступ Request.Form["date"]:

command.CommandText = "insert into users (FirstName, LastName, Place, Email, UserName, Birthday) values('" + firstname.Text + "','" + lastname.Text + "','" + PlaceList.Text + "','" + MyEmail.Text + "','" + AccountText.Text + "','" + Request.Form["date"] + "')";

А также обратите внимание, что этот ввод должен быть внутри тега формы.

0 голосов
/ 19 октября 2018

Необходимо указать свойство runat, чтобы сделать элемент программируемым и доступным из выделенного кода:

<input id="date" type="date" runat="server" />

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

OleDbConnection connection = new OleDbConnection();
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\WebSites\MyWebsite\DataBase.mdb;Persist Security Info=False;";

try
{
    connection.Open();

    OleDbCommand command = new OleDbCommand();
    command.Connection = connection;
    command.CommandText = "insert into users (FirstName, LastName, Place, Email, UserName, Birthday) values(@firstName, @lastName, @placeList, @myMail, @accountText, @date)";
    command.Parameters.AddWithValue("@firstName", firstName.Text);
    command.Parameters.AddWithValue("@lastName", lastName.Text);
    command.Parameters.AddWithValue("@placeList", placeList.Text);
    command.Parameters.AddWithValue("@myMail", myMail.Text);
    command.Parameters.AddWithValue("@accountText", accountText.Text);
    command.Parameters.AddWithValue("@date", date.Text);

    command.ExecuteNonQuery();
}
/* handle various exceptions */
catch (Exception ex)
{
    /*...*/
}
finally
{
    connection.Close();
}
0 голосов
/ 19 октября 2018

Вам нужно сделать это runat = "server" Попробуйте сейчас!

 <input id="date" type="Date" min="1905-01-01" max="2019-01-01" value="2018-01-01" runat = "server"/>

.

 OleDbConnection connection = new OleDbConnection();
    connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\WebSites\MyWebsite\DataBase.mdb;Persist Security Info=False;";
    OleDbCommand command = new OleDbCommand();
    command.Connection = connection;
    connection.Open();
    command.CommandText = "insert into users (FirstName, LastName, Place, Email, UserName, Birthday) values('" + firstname.Text + "','" + lastname.Text + "','" + PlaceList.Text + "','" + MyEmail.Text + "','" + AccountText.Text + "','" + date.Text + "')";
    command.ExecuteNonQuery();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...