所有数据使用C#插入另一个表

时间:2014-09-16 10:55:11

标签: c# sql asp.net sql-server webforms

我有两个表一个名称是Table_1,第二个名称是Table_2。

我的数据库名称是“Test_1”,我有两个表。 在“Table_1”中只包含一个列名称为“col”,在“Table_2”中,第一列是“ID”,第二列是“col”。 我希望当我点击“Button1”时,“Table_1”的所有数据都插入“Table_2”,“ID”是“TextBox1”。 我不知道,如何实现这个问题。 我正在使用ASP.Net C#和SQL Server 2008。

这是我的ASPX代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
    <asp:Label ID="Label1" runat="server" Text="ID"></asp:Label>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Required" ForeColor="Red" ControlToValidate="TextBox1">
    </asp:RequiredFieldValidator><br /><br />
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</asp:Content>

2 个答案:

答案 0 :(得分:0)

在代码中单击按钮时使用此SQL查询

  
      
  1. 制作一个字符串
  2.   
  string qry="INSERT INTO Table_2 (ID, col)"+
    " SELECT ('"+TextBox1.Text+"',col)"+
    " FROM Table_1";
  
      
  1. 运行此查询。它将复制具有与TextBox1中相同ID的所有记录。
  2.   

在TextBox1上应用验证。如果您已经完成了,则无需阅读以下部分:)

此方法的缺点

  

如果用户输入id值,则必须检查SQL注入攻击。否则,您可以信任您的用户。:)   如果进行动态查询,则可能会出现SQL注入攻击。

     

我无法解释这里的sql注入是什么。

预防此次攻击

  

使用适当的验证。如果您在客户端和服务器端使用正确的验证,则用户将无法输入任何特殊符号(;,&#39;&#39;,&#39;等)。所以它会直接消除这种攻击。

     

其次,您可以使用一些代码进行过滤。就像用户输入一些   sql代码然后你必须先在服务器端检查。当用户   输入数据通过过滤,它只是正确的字符串   运行查询

答案 1 :(得分:0)

我得到了解决方案:

SqlCommand com = new SqlCommand("select * from Table_1", con);
SqlDataReader reader = com.ExecuteReader();

string test = "";
while (reader.Read())
{
    test = reader["col"].ToString();

    SqlCommand com1 = new SqlCommand("insert into Table_2 values(@ID,@col)", con);
    com1.Parameters.AddWithValue("@ID", TextBox1.Text);
    com1.Parameters.AddWithValue("@col", test);
    com1.ExecuteNonQuery();
}