错误:无效的列名“B”。在System.Data.SqlClient.SqlConnection

时间:2021-01-16 03:37:50

I'm trying to create a simple registration page with ASP.NET C# in Visual Studio 2013.

我正在尝试用ASP创建一个简单的注册页面。NET c#在Visual Studio 2013。

I've encountered the following error upon clicking on the submit button to ensure that the registration details get into the database that I've tried to connect to.

我在单击submit按钮以确保注册细节进入我试图连接的数据库时遇到了以下错误。

Error:System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'B'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Registration.submitButton_Click(Object sender, EventArgs e) in d:\Desktop\IIPWebsite\Registration.aspx.cs:line 56 ClientConnectionId:41bb1e5f-3298-4b70-89d6-b12d0519ea55

错误:System.Data.SqlClient。SqlException (0x80131904):无效的列名“B”。在System.Data.SqlClient.SqlConnection。在System.Data.SqlClient.SqlInternalConnection中,OnError(SqlException异常、布尔型断点、Action1 wrapCloseInAction)。在System.Data.SqlClient.TdsParser上,OnError(SqlException异常,Boolean断开,Action1 wrapCloseInAction)。在system . data . data . sqlclient . tdsparser上的ThrowExceptionAndWarning(tdsparserstateobj, Boolean callerHasConnectionLock, Boolean asyncClose)。TryRun(RunBehavior RunBehavior RunBehavior RunBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkcopycopycopycopycopycopycopycopycopycopycopycopycopycopycopycopycopycopycopyhandler、tsparserstateobj、boolean&dataready)位于system . data . data .SqlCommand. SqlCommand。FinishExecuteReader(SqlDataReader ds, RunBehavior RunBehavior, String resetOptionsString)位于System.Data.SqlClient.SqlCommand。RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior RunBehavior RunBehavior RunBehavior RunBehavior RunBehavior, Boolean returnStream, Boolean异步,Int32超时,Task& task, Boolean asyncWrite, SqlDataReader ds)位于System.Data.SqlClient.SqlCommand。RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior RunBehavior RunBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean asyncWrite)位于System.Data.SqlClient.SqlCommand。InternalExecuteNonQuery(TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)在System.Data.SqlClient.SqlCommand.ExecuteNonQuery()注册时。submitButton_Click(对象发送者,EventArgs e) in d:\Desktop\IIPWebsite\Registration.aspx。cs:56 ClientConnectionId行:41 bb1e5f - 3298 - 4 - b70 - 89 - d6 - b12d0519ea55

My code for the aspx page are as follows:

我的aspx页面代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Registration.aspx.cs" Inherits="Registration" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
     <meta charset="utf-8" />
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title>NHH Consultants</title>
     <meta name="keywords" content="" />
     <meta name="description" content="" />
     <link href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,700,900" rel="stylesheet" />
     <link href="default.css" rel="stylesheet" type="text/css" media="all" />
     <link href="fonts.css" rel="stylesheet" type="text/css" media="all" />
     <!--[if IE 6]>
     < link href="default_ie6.css" rel="stylesheet" type="text/css" />
     <![endif]-->
     <style type="text/css">
        .style1
        {
            font-size: 1em;
        }
        .style3
        {
            font-size: 4em;
        }
        .style4
        {
            width: 208px;
        }
        .style2
        {
            width: 126px;
        }
        .style6
        {
            font-size: medium;
            color: #FFFFFF;
        }
        .style7
        {
            text-align: center;
            font-size: 30pt;
            color: #FFFFFF;
        }
        .style8
        {
            color: #FF9933;
        }
        .auto-style1 {
            width: 261px;
        }
        .auto-style2 {
            width: 126px;
            height: 27px;
        }
        .auto-style3 {
            width: 208px;
            height: 27px;
        }
        .auto-style4 {
            width: 261px;
            height: 27px;
        }
        .auto-style12 {
            width: 152px;
            height: 26px;
        }
        .auto-style14 {
            width: 261px;
            height: 26px;
        }
        .auto-style23 {
            width: 152px;
            height: 29px;
        }
        .auto-style25 {
            width: 261px;
            height: 29px;
        }
        .auto-style26 {
            width: 206px;
        }
        .auto-style27 {
            width: 206px;
            height: 26px;
        }
        .auto-style28 {
            width: 206px;
            height: 29px;
        }
        .auto-style29 {
            font-size: medium;
            color: #FFFFFF;
            width: 152px;
        }
        .auto-style30 {
            width: 152px;
        }
    </style>
</head>
<body>
    <form id="form" runat="server">
<div id="header-wrapper" 
        style="background-image: url('images/NYC_Night.jpg')">
    <div id="header-wrapper2">
        <div id="header" class="container">
            <div id="logo">
                <h1 style="color: #FFFFFF">NHH Consultants</h1>
            </div>
            <div id="menu">
                <ul>
                    <li class="current_page_item"><a href="#" accesskey="1" title="">Homepage</a></li>
                    <li><a href="#" accesskey="2" title="">LOGIN</a></li>
                    <li><a href="#" accesskey="3" title="">About Us</a></li>
                    <li><a href="#" accesskey="4" title="">Contact Us</a></li>
                    <li><a href="#" accesskey="4" title="">Services</a></li>
                    <li></li>
                </ul>
            </div>
        </div>
        <div class="major">
            <h2 class="style3">reliability, Anytime, anywhere</h2>
            <span class="style1">Your number one electrical &amp; mechanical engineering 
            consultant</span>&nbsp; </div>
    </div>
</div>
<div id="wrapper1" class="style7">
    <strong>Registration 
    <br />
    &quot;*&quot; Denotes field is compulsory</strong></div>
    <table class="style1">
        <tr>
            <td class="auto-style29">
                *Username:</td>
            <td class="style4">
                <asp:TextBox ID="userTB" runat="server" Width="180px">    </asp:TextBox>
            </td>
            <td class="auto-style1">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                    ControlToValidate="userTB" ErrorMessage="Username is required!" 
                    ForeColor="Red" CssClass="style8"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td class="auto-style29">
                *Password:</td>
            <td class="style4">
                <asp:TextBox ID="passTB" runat="server" Width="180px" TextMode="Password" ViewStateMode="Disabled">   </asp:TextBox>
            </td>
            <td class="auto-style1">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                    ControlToValidate="passTB" ErrorMessage="Password is required!" 
                    ForeColor="Red" CssClass="style8"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td class="auto-style29">
                *Confirm Password:</td>
            <td class="style4">
                <asp:TextBox ID="confirmTB" runat="server" Width="180px" TextMode="Password">   </asp:TextBox>
            </td>
            <td class="auto-style1">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
                    ControlToValidate="confirmTB" ErrorMessage="Confirmation of password is required!" 
                    ForeColor="Red" CssClass="style8"></asp:RequiredFieldValidator>
                <br />
                <asp:CompareValidator ID="CompareValidator1" runat="server" 
                    ControlToCompare="passTB" ControlToValidate="confirmTB" 
                    ErrorMessage="Passwords do not match!" ForeColor="Red" CssClass="style8"></asp:CompareValidator>
            </td>
        </tr>
        <tr>
            <td class="auto-style29">
                *Email:</td>
            <td class="style4">
                <asp:TextBox ID="emailTB" runat="server" Width="180px">   </asp:TextBox>
            </td>
            <td class="auto-style1">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
                    ControlToValidate="emailTB" ErrorMessage="Email is required!" 
                    ForeColor="Red" CssClass="style8"></asp:RequiredFieldValidator>
                <br />
                <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
                    ControlToValidate="emailTB" ErrorMessage="Email is invalid!" ForeColor="Red" 
                    ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
                    CssClass="style8"></asp:RegularExpressionValidator>
            </td>
        </tr>
        <tr>
            <td class="auto-style29">
                *Company name:</td>
            <td class="style4">
                <asp:TextBox ID="companyTB" runat="server" Width="180px">   </asp:TextBox>
            </td>
            <td class="auto-style1">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" 
                    ControlToValidate="companyTB" ErrorMessage="Company is required!" 
                    ForeColor="Red" CssClass="style8"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td class="auto-style30" style="color: #FFFFFF">
                *First name:</td>
            <td class="style4">
                <asp:TextBox ID="firstnameTB" runat="server" Width="180px"></asp:TextBox>
            </td>
            <td class="auto-style1" title="First name is required!">

                <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="firstnameTB" ErrorMessage="First name is required!" ForeColor="Red"></asp:RequiredFieldValidator>

            </td>
        </tr>
        </table>
        <table class="style1">
            <tr>
                <td class="auto-style30" style="color: #FFFFFF">*Last name:</td>
                <td class="auto-style26">
                <asp:TextBox ID="lastnameTB" runat="server" Width="179px"></asp:TextBox>
                </td>
                <td class="auto-style1">
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" ErrorMessage="Last name is required!" ControlToValidate="lastnameTB" ForeColor="Red"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td class="auto-style12" style="color: #FFFFFF">*Address:</td>
                <td class="auto-style27">
                <asp:TextBox ID="addressTB" runat="server" Width="180px"></asp:TextBox>
                </td>
                <td class="auto-style14">
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator8" runat="server" ErrorMessage="Address is required!" ControlToValidate="addressTB" ForeColor="Red"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td class="auto-style30" style="color: #FFFFFF">*Postal Code:</td>
                <td class="auto-style26">
                <asp:TextBox ID="postalcodeTB" runat="server" Width="180px"></asp:TextBox>
                </td>
                <td class="auto-style1">
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator9" runat="server" ErrorMessage="Postal Code is required!" ControlToValidate="postalcodeTB" ForeColor="Red"></asp:RequiredFieldValidator>
                    <br />
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator4" runat="server" ControlToValidate="postalcodeTB" ErrorMessage="Postal code is invalid!" ForeColor="Red" ValidationExpression="\d{6}(\d{4})?$"></asp:RegularExpressionValidator>
                </td>
            </tr>
            <tr>
                <td class="auto-style12" style="color: #FFFFFF">*Contact Number:</td>
                <td class="auto-style27">
                <asp:TextBox ID="contactnumberTB" runat="server" Width="180px"></asp:TextBox>
                </td>
                <td class="auto-style14">
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator10" runat="server" ErrorMessage="Contact number is required!" ControlToValidate="contactnumberTB" ForeColor="Red"></asp:RequiredFieldValidator>
                    <br />
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator3" runat="server" ControlToValidate="contactnumberTB" ErrorMessage="Contact number is invalid!" ForeColor="Red" ValidationExpression="^[689]\d{7}$"></asp:RegularExpressionValidator>
                </td>
            </tr>
            <tr>
                <td class="auto-style23" style="color: #FFFFFF">
                    <br />
                    Date of Birth:</td>
                <td class="auto-style28" style="color: Red">
                    <asp:Label ID="dateLabel" runat="server" ForeColor="#FFFF66" Text="Date in YYYY-MM-DD format" Visible="True"></asp:Label>
                    <br />
                <asp:TextBox ID="dateTB" runat="server" Width="180px"></asp:TextBox>
                </td>
                <td class="auto-style25" style="color: Red">
                    <br />
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="dateTB" ErrorMessage="Date is invalid!" ForeColor="Red" ValidationExpression="^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$"></asp:RegularExpressionValidator>
                </td>
            </tr>
            <tr>
                <td class="auto-style30" style="color: #FFFFFF">City:</td>
                <td class="auto-style26">
                <asp:TextBox ID="cityTB" runat="server" Width="180px"></asp:TextBox>
                </td>
                <td class="auto-style1">&nbsp;</td>
            </tr>
            <tr>
                <td class="auto-style30" style="color: #FFFFFF">Fax number:</td>
                <td class="auto-style26">
                <asp:TextBox ID="faxTB" runat="server" Width="180px"></asp:TextBox>
                </td>
                <td class="auto-style1">&nbsp;</td>
            </tr>
            <tr>
                <td class="auto-style30">&nbsp;</td>
                <td class="auto-style26">&nbsp;</td>
                <td class="auto-style1">&nbsp;</td>
            </tr>
        </table>
        <table class="style1">
        <tr>
            <td class="auto-style2">
                </td>
            <td class="auto-style3">
                </td>
            <td class="auto-style4">
                <asp:Button ID="submitButton" runat="server" onclick="submitButton_Click" 
                    Text="Submit" Height="23px" Width="97px" />
                <asp:Button ID="resetButton" runat="server" onclick="resetButton_Click" Text="Reset fields" Height="23px" Width="97px" />
            </td>
        </tr>
    </table>
    </form>
<div id="wrapper">
</div>
    </form>
</body>
</html>

While my codes for the aspx.cs page are as follows:

而我的代码是aspx。cs页面如下:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class Registration : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);
            conn.Open();
            string checkuser = "select count(*) from Client where cUserName= '" + userTB.Text + "'";
            SqlCommand com = new SqlCommand(checkuser, conn);
            int temp = Convert.ToInt32(com.ExecuteScalar().ToString());

            if (temp == 1)
            {
                Response.Write("Username is already taken! Please choose another username.");
            }

            conn.Close();
        }
    }

    protected void submitButton_Click(object sender, EventArgs e)
    {
        try
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);
            conn.Open();
            string insertQuery = "insert into Client (cFirstName, cLastName, cD.O.B, cCompanyName, cAddress, cCity, cZipCode, cPhoneNo, cFax, cEmail, cUsername, cPassword) values (@firstname,@lastname,@dob,@companyname,@address,@city,@zipcode,@phoneno,@fax,@email,@username,@password)";
            SqlCommand com = new SqlCommand(insertQuery, conn);
            com.Parameters.AddWithValue("@firstname", firstnameTB.Text);
            com.Parameters.AddWithValue("@lastname", lastnameTB.Text);
            com.Parameters.AddWithValue("@dob", dateTB.Text);
            com.Parameters.AddWithValue("@companyname", companyTB.Text);
            com.Parameters.AddWithValue("@address", addressTB.Text);
            com.Parameters.AddWithValue("@city", cityTB.Text);
            com.Parameters.AddWithValue("@zipcode", postalcodeTB.Text);
            com.Parameters.AddWithValue("@phoneno", contactnumberTB.Text);
            com.Parameters.AddWithValue("@fax", faxTB.Text);
            com.Parameters.AddWithValue("@email", emailTB.Text);
            com.Parameters.AddWithValue("@username", userTB.Text);
            com.Parameters.AddWithValue("@password", passTB.Text);

            com.ExecuteNonQuery();
            Response.Write("Congratulations! Your registration is successful!");
            Response.Redirect("ClientLogin.aspx");

            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write("Error:" + ex.ToString());
        }
    }

    protected void resetButton_Click(object sender, EventArgs e)
    {
        Response.Redirect("Registration.aspx");
    }
} 

1 个解决方案

#1


2  

You are trying to insert data into a field called c.D.O.B. in the database. Wrap it in square brackets and things should work, i.e.

您正在尝试将数据插入到数据库中名为c.D.O.B.的字段中。用方括号括起来,这样就可以了。

insert into Client (cFirstName, cLastName, [cD.O.B], ...

If you have any influence on the database design, make sure to change that column name into something a little more sensible. Periods in column names don't play well with a lot of tooling, and have very little added value here.

如果您对数据库设计有任何影响,请确保将列名更改为更合理的名称。列名中的句点在使用大量工具时表现不佳,并且在这里几乎没有附加价值。

#1


2  

You are trying to insert data into a field called c.D.O.B. in the database. Wrap it in square brackets and things should work, i.e.

您正在尝试将数据插入到数据库中名为c.D.O.B.的字段中。用方括号括起来,这样就可以了。

insert into Client (cFirstName, cLastName, [cD.O.B], ...

If you have any influence on the database design, make sure to change that column name into something a little more sensible. Periods in column names don't play well with a lot of tooling, and have very little added value here.

如果您对数据库设计有任何影响,请确保将列名更改为更合理的名称。列名中的句点在使用大量工具时表现不佳,并且在这里几乎没有附加价值。