无法从ASP.NET中的SQL数据库获取确切的值

问题描述:

我正在创建ASP.NET,C#应用程序。在SQL Server的gridview中显示输入值结果时两个文本框在哪里。问题是,当我输入数字5我得到15的价值,example。有人可以提供一个提示吗?无法从ASP.NET中的SQL数据库获取确切的值

如何从文本框中键入数据库中的确切值?

源代码:

SQL程序

Create table Hall 
(
    HallID int, 
    Name nvarchar(50), 
    TicketLimit int 
) 
GO 

Create table HallGroup 
(
    HallID int, 
    HallGroupID int, 
    Name nvarchar(50), 
    AZ int 
) 
GO 

Create table HallSeat 
(
    HallGroupID int, 
    ShowSeatID int, 
    Color nvarchar(15), 
    Price int, 
    SeatRow int,  
    SeatNumber int, 
    IsReserved bit 
) 

/**Search Procedure ****/ 

USE [Reservations] 
GO 

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER Procedure [dbo].[Search] 
@searchNumber varchar(50), 
@searchRow varchar(50) 

as 
Begin 
    select * from HallSeat where (SeatNumber like '%' + @searchNumber + '%') and (SeatRow like '%' + @searchRow + '%') 

End 

代码隐藏

protected void ButtonSearch_Click(object sender, EventArgs e) 
    { 
     cs = ConfigurationManager.ConnectionStrings["CS"].ConnectionString; 

     SqlConnection result = new SqlConnection(cs); 

     String search = "Search"; // Paieskos   
     SqlCommand find = new SqlCommand(search, result); 
     find.CommandType = CommandType.StoredProcedure; 
     find.Parameters.Add("@searchRow", SqlDbType.VarChar).Value = TextBoxRow.Text; 
     find.Parameters.Add("@searchNumber", SqlDbType.VarChar).Value = TextBoxNumber.Text; 

     result.Open(); 
     SqlDataReader dr; 
     dr = find.ExecuteReader(); 

     if (dr.HasRows) 
     { 
      dr.Read(); 

      rep_bind(); 
      GridView1.Visible = true; 

      TextBoxRow.Text = ""; 
      TextBoxNumber.Text = ""; 
     } 
     else 
     { 
      GridView1.Visible = false; 

     } 

    } 

.aspx的

<div class="container">  

     <asp:TextBox ID="TextBoxRow" placeholder="Type Seat Row" runat="server" style="border-radius: 5px;" Height="35px"></asp:TextBox>    
     <asp:TextBox ID="TextBoxNumber" placeholder="Type Seat Number" runat="server" style="border-radius: 5px;" Height="35px"></asp:TextBox> 
     <br> 
     <br> 
     <br> 

     <asp:Button ID="ButtonSearch" runat="server" CssClass="button" Text="Search for availability" OnClick="ButtonSearch_Click" OnClientClick="true" UseSubmitBehavior="false" /> 
     <style type="text/css"> 
      .button { 
       background:white; 
       color: black; 
       border: solid 3px #6496c8; 
       font-family: cursive; 
       font-size: 18px; 
      } 
      .button:hover, 
      .button.hover 
      { 
       border-color: #346392; 
       background: #7ABCDC; 
       color: white;    
      } 
      .button:active{ 
       border-color: #27496d; 
       color: #27496d; 
      } 

     </style> 
    </div> 

    <!-- Paieskos rezultatu isvedimas GridView--> 

<div id="GRID"> 
    <asp:GridView ID="GridView1" runat="server" HorizontalAlign="Center" AllowPaging="True" CellPadding="3" Width="568px" GridLines="Vertical" Visible="False" AutoGenerateColumns="False" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px">  

     <FooterStyle BackColor="#CCCCCC" ForeColor="Black" /> 
     <HeaderStyle BackColor="#121315" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#EEEEEE" ForeColor="Black" /> 
     <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" /> 
     <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
     <SortedAscendingHeaderStyle BackColor="#0000A9" /> 
     <SortedDescendingCellStyle BackColor="#CAC9C9" /> 
     <SortedDescendingHeaderStyle BackColor="#000065" /> 

      <AlternatingRowStyle BackColor="#DCDCDC" /> 

     <Columns>   

     <asp:TemplateField HeaderText="HALL"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("HallGroupID") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("HallGroupID") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 


      <asp:TemplateField HeaderText="ID"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("ShowSeatID") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label3" runat="server" Text='<%# Bind("ShowSeatID") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="COLOR"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("Color") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label4" runat="server" Text='<%# Bind("Color") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="PRICE"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("Price") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label5" runat="server" Text='<%# Bind("Price") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="ROW"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("SeatRow") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label6" runat="server" Text='<%# Bind("SeatRow") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="NUMBER"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox7" runat="server" Text='<%# Bind("SeatNumber") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label7" runat="server" Text='<%# Bind("SeatNumber") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField>    

      <asp:TemplateField HeaderText="STATUS" SortExpression="Active"> 
        <ItemTemplate><%# (Boolean.Parse(Eval("IsReserved").ToString())) ? "RESERVED" : "FREE" %></ItemTemplate> 
      </asp:TemplateField>    

      <asp:TemplateField>     
       <ItemTemplate>       
        <asp:Button ID="ButtonReserve" style="background:#2ACC16; border-radius:8px;" runat="server" CommandName="Reserve" HeaderText="BOOK SEAT" Text="Reserve" OnClick="ButtonReserve_Click" />     
       </ItemTemplate>    
      </asp:TemplateField> 

     </Columns>      
    </asp:GridView> 
+0

我没有看到任何地方你的代码或你有什么试过。 –

+0

请显示你写了什么代码连接到数据库并获取 –

+3

你必须显示你的代码和至少SQL查询你使用 –

您正在使用like运营商在SQL一边进行搜索。它不会比较,因为它会搜索一个模式。在你的例子中,它会得到所有的记录,其中有5

欲了解更多信息请访问Like operator

要解决您的解决方案使用=操作员比较准确的输入。

select * from HallSeat where (SeatNumber = +'+ @searchNumber +'+) and (SeatRow like '%' + @searchRow + '%') 

因为你与like '%5%'搜索尝试= '5'

+0

谢谢。我删除了所有的%符号,并保留“',它工作正常。 – Paulius

您必须将此样本 在DataReader的绑定到GridView,如不执行者datarader.Read()之前,你的绑定。

using (SqlConnection con = new SqlConnection(strConnString)) 
{ 
    using (SqlCommand cmd = new SqlCommand()) 
    { 
     cmd.CommandText = "select top 10 * from Customers"; 
     cmd.Connection = con; 
     con.Open(); 
     GridView1.DataSource = cmd.ExecuteReader(); 
     GridView1.DataBind(); 
     con.Close(); 
    } 
} 

而正如其他人所说,你的存储过程是不正确的。 应该是这样的

ALTER Procedure [dbo].[Search] 
@searchNumber int, 
@searchRow int 

as 
Begin 
    select * from HallSeat where SeatNumber = @searchNumber and SeatRow = @searchRow 

End