将Asp.net网页中的数据插入本地SQL Express数据库

时间:2013-07-10 13:13:21

标签: c# asp.net visual-studio-2010

非常新的编码,我基本上试图创建一个将在网格中显示数据的asp网站,我工作正常(足够简单)但我希望能够添加它

我有一个default.aspx,我的数据出现了,Add.aspx是我的插页。

我有4个文本框,我用来键入数据,按下按钮,它会将数据插入到已运行的sql express db中,

我正在运行,1个数据库有1个表,所以你可以理解我的小项目是多么简单。

我运行了调试,我没有遇到任何问题:

default.aspx的代码

</title>
</head>
<body>
    <strong style="border-style: ridge">:: Server List Details Page ::</strong>
<p></p>


    <form id="form1" runat="server">
    <div>
    </div>

            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataSourceID="SqlDataSource1" AllowSorting="True">
                <Columns>
                    <asp:BoundField DataField="ServerName" HeaderText="ServerName" 
                        SortExpression="ServerName" />
                    <asp:BoundField DataField="IPAddress" HeaderText="IPAddress" 
                        SortExpression="IPAddress" />
                    <asp:BoundField DataField="Description" HeaderText="Description" 
                        SortExpression="Description" />
                    <asp:BoundField DataField="Location" HeaderText="Location" 
                        SortExpression="Location" />
                </Columns>
            </asp:GridView>
            <asp:Button ID="Add" runat="server" Text="Add Device" OnClick="Add_click" OnClientClick="window.open('add.aspx', 'add');"/>

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 

        SelectCommand="SELECT [ServerName], [IPAddress], [Description], [Location] FROM [Table1]">
    </asp:SqlDataSource>
    </form>


</body>
</html>

ADD.aspx的代码 的

    <title></title>
    </head>
<body>
    <form id="form1" runat="server">
    <strong>:: Add Device Details ::
    <br />
    <br />
    <br />
    </strong>

    Server Name:
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <br />
    IP Address:&nbsp;&nbsp;&nbsp; 
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    <br />
    Description:&nbsp;&nbsp;&nbsp;
    <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
    <br />
    Location:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
    <br />
    <br />
    <asp:Button ID="Generate_Data" runat="server" Text="Generate Data" 
        onclick="Generate_Data_Click" PostBackUrl="~/Default.aspx" />
    </form>





</body>
</html>

Button提交信息的代码: 的

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;


namespace Table_to_DB
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Generate_Data_Click(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection("Data Source= 172.17.10.89; initial catalog=database1");

            SqlCommand cmd = new SqlCommand("INSERT INTO database1 (" + " servername, ipaddress, description, Location " + ") VALUES (" + " @TextBox1.text, @TextBox2.text, @TextBox3.text, @TextBox4.text" + ")", cn);

            cn.Open();
            cmd.ExecuteNonQuery();
            cn.Close();

        }
    }
}

我遇到的问题是,当我输入数据并提交数据时,表中没有任何错误和数据结束。

请大家帮忙,大部分代码都是我上网的,我还在学习。

1 个答案:

答案 0 :(得分:2)

您的命令文字错误。将参数传递给SqlCommand应该是这个

string cmdText = "INSERT INTO table1 (servername, ipaddress, description, Location) " + 
                 "VALUES (@p1, @p2, @p3, @p4)";
string conString = "Data Source= 172.17.10.89; initial catalog=database1";

using(SqlConnection cn = new SqlConnection(conString))
using(SqlCommand cmd = new SqlCommand(cmdText, cn))
{
    cn.Open();
    cmd.Parameters.AddWithValue("@p1",TextBox1.Text);
    cmd.Parameters.AddWithValue("@p2",TextBox2.Text);
    cmd.Parameters.AddWithValue("@p3",TextBox3.Text);
    cmd.Parameters.AddWithValue("@p4",TextBox4.Text);
    int recordsAdded = cmd.ExecuteNonQuery();
}

您无法直接将文本框的属性文本传递到命令文本中 在这里你设置了一些占位符(我已经调用了一般的@ p1等,但你可以更改为更精确的类似名称),然后为每个占位符准备SqlCommand设置的Parameters集合,你要存储的值在数据库中 此外,我建议你的文本框也提供更有意义的名字。

并始终使用参数。不要使用字符串连接。它似乎更快,但它是通往地狱的道路