当我尝试从ID =“ USERNAME”的文本框中插入数据时,无法将数据插入数据库中,这是通过将值选择为@USERNAME来实现的,例如:InsertCommand =“ INSERT INTO [Table12]([USERNAME] )VALUES(@USERNAME)”。但是,如果我不选择从上述文本框中插入数据,则同样可以正常工作。
如果要在INSERT语句中使用以上代码,我将遇到错误。
“无法将值NULL插入表'D:\ LOGINCONTROL \ LONGINCONTROLTEM \ LONGINCONTROLTEM \ APP_DATA \ ASPNET-LONGINCONTROLTEM-20150905150101.MDF.dbo.Table12'的列'USERNAME'中;该列不允许为空。插入失败。该语句具有已终止。”
下面的语句工作正常,但上面的语句却无效,因为一旦单击按钮,文本“ 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();
}
}
}
似乎需要进行一些小的更改才能使此工作正常进行:
首先,您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();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句