【问题标题】:Insert data from form field to SQL将表单字段中的数据插入 SQL
【发布时间】:2017-10-06 12:12:22
【问题描述】:

由于是 .NET 的新手,我很难将我的 VS 2013 与 SQL 连接起来。

我已经将它与数据库连接,但现在我想知道如何在我的 AdventureWork Databaze 中插入数据,从我页面中的文本框。你能帮我吗因为我真的不明白 您可以在下面找到我的一些代码:

<h1>Add in Database</h1>
    <div>
    Enter Name:  <asp:TextBox ID="TextBox3" runat="server" ></asp:TextBox>
   </br></br>
</div>
    Enter Surname:  <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
    </br></br>
    Gender:  <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
    <br />
    <br />
    <asp:Label ID="Label1" runat="server" ForeColor="#CC3300" Text="Label"></asp:Label>
    </br></br>
    <asp:Button ID="Button2" runat="server" Text="Submit" OnClick="Button1_Click" />
    &nbsp;&nbsp;&nbsp;
    <asp:SqlDataSource ID="SqlDataSource2" runat="server">
        ConnectionString="<$ ConnectionStrings:AdventureWorks2014ConnectionString >"
         SelectCommand="INSERT INTO [users] VALUE ([FirstName] = @FirstName)" ProviderName="System.Data.SqlClient">
    </asp:SqlDataSource>

    <br />
    <br />

    <br />
        </form>

和:`

 protected void Button2_Click(object sender, EventArgs e)
    {
        SqlConnection cnn = new SqlConnection();
        cnn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["AdventureWorks2014ConnectionString"].ConnectionString;
        cnn.Open();
        SqlCommand cmd = new SqlCommand("Insert  into users (FirstName,LastName,Gender) Values (@Name,@Surname,@Gender)",cnn);
        cmd.Parameters.AddWithValue("@Name", TextBox3.Text);
        cmd.Parameters.AddWithValue("@Surname", TextBox4.Text);
        cmd.Parameters.AddWithValue("@Gender", TextBox5.Text);
        cnn.Open();
        cmd.ExecuteNonQuery();
        cnn.Close();

        if (IsPostBack)
        {

            TextBox3.Text = "";
            TextBox4.Text = "";
            TextBox5.Text = "";
        }
    }  

【问题讨论】:

  • 你有什么异常吗?
  • 你的 SelectCommand 真的应该是 INSERT INTO [users] VALUE ([FirstName] = @FirstName) 吗?
  • 请说明问题所在。 (部分来自不明白
  • 我想在我的 SQL 数据库中插入数据,这些数据将来自用户将插入的表单(文本框)。问题是我没有找到如何实现这一目标
  • @保罗艾伦。也许不吧。我在尝试不同的形式

标签: c# sql .net visual-studio


【解决方案1】:

虽然我不确定为什么上面的代码不起作用。我已经复制了这个并重写了按钮单击处理程序代码。下面是我的工作示例:

protected void Button2_Click(object sender, EventArgs e)
{
    var connStr = ConfigurationManager.ConnectionStrings["AdventureWorks2014ConnectionString"].ConnectionString;
    using (var cnn = new SqlConnection(connStr)) {
        cnn.Open();

        var cmd = cnn.CreateCommand();
        cmd.CommandText = "Insert into users (FirstName,LastName,Gender) Values (@Name,@Surname,@Gender)";
        cmd.Parameters.AddWithValue("@Name", TextBox3.Text);
        cmd.Parameters.AddWithValue("@Surname", TextBox4.Text);
        cmd.Parameters.AddWithValue("@Gender", TextBox5.Text);

        var affectedRows = cmd.ExecuteNonQuery();
        //  Do validation here.
        //  This should be 1, the number of rows inserted.
    }

    if (IsPostBack)
        TextBox3.Text = TextBox4.Text = TextBox5.Text = string.Empty;       
}

我注意到在您的示例中,您尝试打开数据库连接两次。您可以进行的其他更正是将 SqlConnection 包装在 using 语句中。这样,当对象处置时,它将为您关闭连接。还要检查从插入语句返回的受影响的行数。这可能会为您提供一些关于为什么未插入数据的线索。如果您使用的是 SQL Server Developer Edition,则可以启动 SQL Profiler 以查看从应用程序发送到 SQL Server 的结果 T-SQL 语句。我希望这有帮助。

【讨论】:

  • 我正在尝试这个并导致我出现这个错误:错误 11 当前上下文 C:\....... .\Visual Studio 2013\Projects\DB\DB\UserReg.aspx.cs 30 27 数据库
  • 文件顶部是否有 using 语句? using System.Configuration;
  • System.Data.dll 中发生“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理其他信息:无法将值 NULL 插入表“BusinessEntityID”列'AdventureWorks2014.dbo.users';列不允许空值。插入失败。
  • 如果你对数据库没有默认约束,你必须填写所有需要的数据。这是报告此错误的架构验证。从好的方面来说,至少您知道您现在正在尝试插入数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多