当我尝试从ID =“USERNAME”的文本框插入数据时,我无法将数据插入到数据库中,即选择VALUES为@USERNAME,例如:InsertCommand =“INSERT INTO [Table12]( [USERNAME])VALUES( @USERNAME )“。 但如果我不选择从上面的文本框中插入数据,那么同样的工作绝对正常。
如果我在INSERT语句中使用上面的代码,我会收到以下错误。
“无法将值NULL插入列'USERNAME',表'D:\ LOGINCONTROL \ LONGINCONTROLTEM \ LONGINCONTROLTEM \ APP_DATA \ ASPNET-LONGINCONTROLTEM-20150905150101.MDF.dbo.Table12';列不允许空值.INSERT失败。 声明已经终止。“
下面的语句工作正常但不是上面的,因为在单击按钮后,文本“SOME VALUE”正确插入数据库,这证明此处没有连接问题。
例如:InsertCommand=“INSERT INTO [Table12]([USERNAME])VALUES('SOME DATA')”。
以下是我正在使用的完整代码。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="INPUTTODATABASE.aspx.cs" Inherits="LongincontrolTem.INPUTTODATABASE" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div id="testtest" runat="server">
User Name: <asp:TextBox ID="USERNAME" value="" runat="server" ></asp:TextBox>
<asp:Button ID="SaveData" runat="server" Text="InsertData" OnClick="SaveData_Click" />
<asp:SqlDataSource ID="InsertInformation" runat="server" DataSourceMode="DataSet"
ConnectionString="Data Source=DECTO-PC;AttachDbFilename=|DataDirectory|\aspnet-LongincontrolTem-20150905150101.mdf;Integrated Security=True"
InsertCommand="INSERT INTO [Table12] ([USERNAME]) VALUES (@USERNAME)"
ProviderName="System.Data.SqlClient" >
<InsertParameters>
<asp:Parameter Name="USERNAME" Type="Char" />
</InsertParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
// **code behind page**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace LongincontrolTem
{
public partial class INPUTTODATABASE : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void SaveData_Click(object sender, EventArgs e)
{
SqlDataSource DataSourced = (SqlDataSource)FindControl("InsertInformation");
DataSourced.Insert();
}
}
}
答案 0 :(得分:1)
看起来需要进行一些小的改动才能实现这个目标:
首先,您的InsertParameters
应该引用您的TextBox,因为这是您提供值所需的内容。此外,您可能需要String
而不是Char
。尝试用以下内容替换该块:
<InsertParameters>
<asp:ControlParameter Name="USERNAME" Type="String" ControlID="USERNAME" />
</InsertParameters>
接下来,您的SaveData_Click
事件可以简化:
protected void SaveData_Click(object sender, EventArgs e)
{
InsertInformation.Insert();
}