【问题标题】:I dont know how to insert to access database input type = "date" please我不知道如何插入访问数据库输入类型=“日期”请
【发布时间】:2018-10-19 08:12:08
【问题描述】:

我有一个网站,我做了 asp:button 并在数据库中添加了 asp:textbox 并且它起作用了。 但是当我尝试插入时,它对我不起作用。我正在尝试在 aspx.cs 中将 insert date.text 写入我的数据库,它正在查找它的 id,因为它是输入而不是 asp:textbox。

<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\

没有找到这个id。

请问,谁能帮我解决? :(

【问题讨论】:

    标签: c# html asp.net database


    【解决方案1】:

    您必须指定 runat 属性以使元素可编程并可从代码隐藏中访问:

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

    您还应该永远直接在查询中将用户输入作为参数解析,因为这将不可避免地导致您遇到security 和其他问题(例如字符串中的引号、无效的非数值、基于用户区域设置的日期格式等)。请改用command parameters

    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();
    }
    

    【讨论】:

      【解决方案2】:

      在您的代码中,您可以通过名称而不是 id 获取表单元素,因此为您的输入元素命名:

      <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"] + "')";
      

      还要注意这个输入必须在表单标签内。

      【讨论】:

        【解决方案3】:

        你需要做到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();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-03
          • 1970-01-01
          • 2016-09-03
          • 2013-02-18
          • 2015-02-12
          相关资源
          最近更新 更多