【问题标题】:Select and count how many rows选择并计算行数
【发布时间】:2020-11-14 17:06:25
【问题描述】:

抱歉,我只是在学习 C#。我习惯了 HTML/PHP,然后是实际编程。

我正在寻找使用 SQL SELECT 来查看搜索结果中的数据但是很可能由于多个 LIKE 它可能会带来多行(我想要)但是如果它带来多行而不是选择第一行来显示我想要一条 IF 消息,说明有不止一行与条件匹配。以下是我当前的代码(我在 if (recordfound) 之后删除了一些代码以缩短此问题的代码)

SqlConnection con1 = new SqlConnection(@Settings.Default.database);
con1.Open();
string qu = "SELECT * FROM addresses WHERE road LIKE '%" + inclocroad.Text.Trim() + "%' OR postcode LIKE '%" + inclocroad.Text.Trim() + "%' OR full_address LIKE '%" + inclocroad.Text.Trim() + "%' OR Property LIKE '%" + inclocno.Text.Trim() + "%' OR full_address2 LIKE '%" + inclocroad.Text.Trim() + "%' ";
SqlCommand cmd1 = new SqlCommand(qu, con1);
SqlDataReader dr = cmd1.ExecuteReader();
bool recordfound = dr.Read();
if (recordfound)
{
    //Displays data from row
} 
else
{
    messagebox.show("No data found");
}

示例

用户点击按钮

SQL 在用户写入搜索结果的地方使用 SELECT QUERY

如果 SELECT QUERY 超过 1 行则显示消息框

否则显示与搜索结果匹配的唯一行。

【问题讨论】:

  • 注意SQL Injections
  • 感谢您的建议。我知道 SQL 注入,但是我有一个预防措施,服务器检查某人所做的每一件事,如果检测到 SQL 注入运行良好,则将他们踢出应用程序。无论如何,这是一个私人应用程序,所以我并没有对此大惊小怪。
  • 我的文本框不允许除文本和数字以外的任何内容。
  • 我更喜欢处理对象,而不是使用 DataTables,一个简单的 ORM 就可以解决问题。像 Dapper 一样,来自我们在 stackoverflow 上的朋友stackexchange.github.io/Dapper

标签: c# sql database


【解决方案1】:

好吧,你为什么不数一数呢:

SELECT COUNT(1) ....

由于我们只讨论几行,它不会影响性能或其他任何东西。

【讨论】:

    【解决方案2】:

    如果您希望使用 DataTable 加载数据,可以使用它。

        SqlCommand cmd1 = new SqlCommand(qu, con1);
        SqlDataReader dr = cmd1.ExecuteReader();
        bool recordfound = dr.Read();
    
        DataTable dt = new DataTable();
        if (recordfound)
        {
             dt.Load(reader);
        } 
        
        int numRows= dt.Rows.Count;
        if(numRows > 1){
            messagebox.show("Data found"+ numRows);
        }
        else
        {
            messagebox.show("No data found");
        }
    

    【讨论】:

      【解决方案3】:

      这很简单……我只是在玩一会儿。

      我已经用 IF 查询创建了两个 SQL,如果它有更多的结果。 第一个 SQL 是使用 ExecuteScalar 的 COUNT,而不是使用 IF 语句(如果它确实包含多个记录)。

      感谢您的帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        相关资源
        最近更新 更多