非常新的编码,我基本上试图创建一个将在网格中显示数据的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:
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
Description:
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
Location:
<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();
}
}
}
的
我遇到的问题是,当我输入数据并提交数据时,表中没有任何错误和数据结束。
请大家帮忙,大部分代码都是我上网的,我还在学习。
答案 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集合,你要存储的值在数据库中 此外,我建议你的文本框也提供更有意义的名字。
并始终使用参数。不要使用字符串连接。它似乎更快,但它是通往地狱的道路