从ASP.NET将数据插入本地SQL Server数据库

时间:2017-08-25 02:50:58

标签: c# asp.net

我正在尝试将ASP.NET中的数据插入到本地SQL Server数据库中。我关注https://www.youtube.com/watch?v=8bNCfUaJPf8。也许你可以先尝试观看视频。我完全遵循这个过程。

以下是代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"  Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
    .auto-style1 {
        text-align: center;
    }
    .auto-style2 {
        width: 100%;
    }
    .auto-style3 {
        width: 183px;
    }
    .auto-style4 {
        width: 183px;
        height: 21px;
    }
    .auto-style5 {
        height: 21px;
    }
</style>
</head>
<body>
<form id="form1" runat="server">
<div>

    <h2 class="auto-style1">insert data</h2>
    <br />

</div>
    <table class="auto-style2">
        <tr>
            <td class="auto-style4">FirstName :</td>
            <td class="auto-style5">
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td class="auto-style3">LastName :</td>
            <td>
                <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td class="auto-style3">City :</td>
            <td>
                <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td class="auto-style3">&nbsp;</td>
            <td>
                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" />
            </td>
        </tr>
    </table>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" OnSelecting="SqlDataSource1_Selecting" SelectCommand="SELECT * FROM [Table]"></asp:SqlDataSource>
</form>
</body>
</html>

这是代码隐藏文件:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.UI;
 using System.Web.UI.WebControls;
 using System.Data.SqlClient;
 using System.Configuration;

 public partial class _Default : System.Web.UI.Page
 {
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

     protected void Page_Load(object sender, EventArgs e)
     {
         con.Open();
     }

     protected void Button1_Click(object sender, EventArgs e)
     {
          SqlCommand cmd = new SqlCommand("insert into Table (fname, lname, city) values ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "')", con);
         cmd.ExecuteNonQuery();
         con.Close();

         TextBox1.Text = "";
         TextBox2.Text = "";
         TextBox3.Text = "";
     }
}

当我尝试插入数据时,会出现此错误:

error

table

2 个答案:

答案 0 :(得分:3)

Table

是一个SQL关键字,您应该可以使用

[Table] 

将您的表名与关键字区分开来。

所以尝试使用

SqlCommand cmd = new SqlCommand("insert into [Table] (fname, lname, city) values ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "')", con);

答案 1 :(得分:0)

您的文本框输入可能包含一个转义字符串的值。您正在使用的方法是对SQL注入攻击开放。

例如: 如果textbox1.txt包含一个'字符,它将破坏查询,因为它会重写该值。

如果查看SqlCommand对象的命令文本属性,您可能会看到这个。我强烈建议你看看那个属性,并做一些关于sql注入的谷歌搜索。如果你在任何这些盒子上的输入是“'; drop database; - ”,你的整个数据库都将被删除。

这可能是您的输入未被清理或正确传递给sql的问题。