C# 只打印数据库的第一行数据,而不是整个表的数据

C# 只打印数据库的第一行数据,而不是整个表的数据,c#,html,mysql,sql,asp.net,C#,Html,Mysql,Sql,Asp.net,我需要输出仅在第一行的数据,但它正在打印添加到数据库表中的所有数据。以下是数据: 例如,它应该只打印“Not Very Nice”和ID为27的消息,而不打印ID为28的第二行 代码如下: using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Configuration; public partial class fee

我需要输出仅在第一行的数据,但它正在打印添加到数据库表中的所有数据。以下是数据:

例如,它应该只打印“Not Very Nice”和ID为27的消息,而不打印ID为28的第二行

代码如下:

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;

public partial class feedback1 : System.Web.UI.Page
{
    SqlConnection con;
    string cons = ConfigurationManager.ConnectionStrings["constring"].ConnectionString;
    SqlCommand cmd;
        protected void Page_Load(object sender, EventArgs e)
    {

    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            con = new SqlConnection(cons);
            con.Open();
            cmd = new SqlCommand("insert into feedback(username,message) values('" + TextBox1.Text + "','" + TextBox2.Text +"')", con);
            cmd.ExecuteNonQuery();
        }
}
这是输出。。

这是输出页面代码

 <form id="form1" runat="server">
         <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1" EnableModelValidation="True" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" GridLines="None">
        <Columns>
            <asp:BoundField DataField="id" InsertVisible="False" ReadOnly="True" SortExpression="id" />
            <asp:BoundField DataField="username" HeaderText="username" SortExpression="username" />
            <asp:BoundField DataField="message" HeaderText="message" SortExpression="message" />
        </Columns>
    </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" OnSelecting="SqlDataSource1_Selecting" SelectCommand="SELECT * FROM [feedback]"></asp:SqlDataSource>
    <div>

    </div>
    </form>

这只是修改SQL查询的一个例子:

选择第一行:

<asp:SqlDataSource 
    ID="SqlDataSource1" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    OnSelecting="SqlDataSource1_Selecting" 
    SelectCommand="SELECT * FROM [feedback] LIMIT 1">
</asp:SqlDataSource>

这只是修改SQL查询的一个例子:

选择第一行:

<asp:SqlDataSource 
    ID="SqlDataSource1" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    OnSelecting="SqlDataSource1_Selecting" 
    SelectCommand="SELECT * FROM [feedback] LIMIT 1">
</asp:SqlDataSource>

取决于您是否总是想要ID为27的特定行,或者您是否只想要“第一”行,无论发生什么,您都可以编写

SELECT * FROM feedback WHERE id = 27

分别


另外,这是用MySQL的语法给出的,因为这就是你给问题加上的标签。但是,从您的代码中,我可以看到您使用了
SqlConnection
对象进行连接,该对象仅与
Microsoft SQL Server
兼容。如果您使用的是SQL Server而不是MySQL,那么请更改您的问题标签,以提及正确的产品。您还需要将上面示例中的第二个查询更改为
从反馈中选择TOP 1
,因为SQL Server中使用了
TOP
,而
LIMIT
MySQL

中实现了相同的效果,这取决于您是否总是想要ID为27的特定行,或者是否只想要“第一”行,不管发生什么,你都可以写

SELECT * FROM feedback WHERE id = 27

分别



另外,这是用MySQL的语法给出的,因为这就是你给问题加上的标签。但是,从您的代码中,我可以看到您使用了
SqlConnection
对象进行连接,该对象仅与
Microsoft SQL Server
兼容。如果您使用的是SQL Server而不是MySQL,那么请更改您的问题标签,以提及正确的产品。您还需要将上面示例中的第二个查询更改为
从反馈中选择TOP 1
,因为SQL Server中使用了
TOP
,而
LIMIT
MySQL

中实现了相同的效果,将SelectCommand更改为从[feedback]中选择TOP 1*我看不到您选择用来打印数据的代码。@Gaurav这是以
limit 1?开头的一行。。。。。警告:您的INSERT查询易受SQL注入攻击。您应该使用参数化查询来帮助防止攻击者通过使用恶意输入值危害您的数据库。给出了风险的解释,以及如何使用.NET安全地编写查询的一些示例。切勿将未初始化的数据直接插入SQL。现在编写代码的方式,有人很容易窃取、错误更改甚至删除您的数据。将SELECT命令更改为从[feedback]中选择TOP 1*,我看不到用于打印数据的代码。@Gaurav这是以
limit 1?开头的一行。。。。。警告:您的INSERT查询易受SQL注入攻击。您应该使用参数化查询来帮助防止攻击者通过使用恶意输入值危害您的数据库。给出了风险的解释,以及如何使用.NET安全地编写查询的一些示例。切勿将未初始化的数据直接插入SQL。按照现在编写代码的方式,有人很容易窃取、错误地更改甚至删除您的数据。MySQL不可能使用“TOP”(这就是问题的标签)。请看@ADyson You's correct,它甚至在我提供的资源中列出。我使用了你的第二个代码,即ID,它对我有效!MySQL不可能使用“TOP”(这就是问题的标签)。请看@ADyson You's correct,它甚至在我提供的资源中列出。我使用了你的第二个代码,即ID,它对我有效!将信息添加到数据库中并没有问题,但它应该只打印我需要的一行!是的,我也被这弄糊涂了。在OP更改标记之前,我将假定mysql。@Yash我的答案不是指添加任何内容。你是在回复我上面关于SQL注入的评论吗?在那篇评论中,我并不是说你的插件不起作用,我是说它容易受到黑客的攻击。访问我在评论中提供的链接,您将开始理解为什么这是一个问题。例如,我怀疑您是否希望人们能够在未经许可的情况下删除您的数据@Yash还请向我们澄清您使用的是MySQL还是SQL Server?你知道它们是不同的数据库系统吗?正如我提到的,您的问号与代码中的内容相矛盾。@Yash您确定吗?如果这是事实,那么您将无法使用
SqlConnection
与数据库建立连接-这仅适用于
Microsoft SQL Server
-请参阅。在.NET中,对于MySQL,您必须使用。我在想,也许你不知道你在用什么技术,这真的不是一件好事。它应该很容易让你检查你真正使用的是什么没有问题,添加信息到数据库,但它应该只打印一行,无论我需要!是的,我也被这弄糊涂了。在OP更改标记之前,我将假定mysql。@Yash我的答案不是指添加任何内容。你是在回复我上面关于SQL注入的评论吗?在那篇评论中,我并不是说你的插件不起作用,我是说它容易受到黑客的攻击。访问我在评论中提供的链接,您将开始理解为什么这是一个问题。例如,我怀疑您是否希望人们能够在未经许可的情况下删除您的数据@Yash还请向我们澄清您使用的是MySQL还是SQL Server?你知道它们是不同的数据库系统吗?正如我提到的,你的
SELECT * FROM feedback LIMIT 1