Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从DB查询更新DataGridView的行_C#_Sql_Datagridview - Fatal编程技术网

C# 无法从DB查询更新DataGridView的行

C# 无法从DB查询更新DataGridView的行,c#,sql,datagridview,C#,Sql,Datagridview,我在将DataGridView更新为数据库数据中的行时遇到问题。我的代码如下: public Array ClientSearch(string Argument, string SearchType) { Connection.Open(); string QueryStr = "SELECT ClientName,PostCode,ContactNo FROM ClientSearch WHERE "+SearchType+" LIKE %"+

我在将DataGridView更新为数据库数据中的行时遇到问题。我的代码如下:

    public Array ClientSearch(string Argument, string SearchType)
    {
        Connection.Open();
        string QueryStr = "SELECT ClientName,PostCode,ContactNo FROM ClientSearch WHERE "+SearchType+" LIKE %"+Argument+"%";



        SqlCommand Query = new SqlCommand(QueryStr, Connection);

        SqlDataReader ExecuteQuery = Query.ExecuteReader();

        DataTable ResultSet = new DataTable();

        ResultSet.Load(ExecuteQuery);
        Connection.Close();
        if (ResultSet.Rows.Count.Equals(0))
        {
            return null;
        }
        else
        {

            // Single-dimensional array (strings).
            System.Collections.ArrayList Results = new System.Collections.ArrayList();
            while (ExecuteQuery.Read())
            {
                Results.Add(ExecuteQuery.GetString(0));
            }

            return Results.ToArray();

        }
    }
该方法由以下程序调用:

    private void SearchBy_TextChanged(object sender, EventArgs e)
    {
        SQLCmdSet Database = new SQLCmdSet();
        string Param = "";
        if (this.ByName.Checked.Equals(true))
        {
            Param = "ClientName";
        }
        if (this.ByPostCode.Checked.Equals(true))
        {
            Param = "PostCode";
        }
        Array Array = Database.ClientSearch(this.SearchBy.Text, Param);

        foreach (string Element in Array)
        {
            this.ClientInfor.Rows.Add(Element);
        }
    }
网格本身有3列,名为:

客户名称

邮政编码

联系人号码


我尝试了以下链接以提供帮助,并尝试手动修改以返回处理行添加的方法。这没有用,然后我搜索了一些stackoverflow URL,找到了在
ExecuteQuery.Read()
上使用while循环的方法,但这也没有用

进一步研究后,解决方法非常简单:

我通过以下方式更改了查询方法以返回DataTable:

 public DataTable ClientSearch(string Argument, string SearchType)
        {
            Connection.Open();
            string QueryStr = "SELECT ClientName,PostCode,ContactNo FROM Clients WHERE " + SearchType + " LIKE '%" + Argument + "%'";
            DataTable DataT = new DataTable();
            SqlDataAdapter SQLDA = new SqlDataAdapter(QueryStr, Connection);
            SQLDA.Fill(DataT);
            return DataT;

        }
并打开了与数据库的连接,修改后的Searchby文本框方法已更改为:

    private void SearchBy_TextChanged(object sender, EventArgs e)
    {
        SQLCmdSet Database = new SQLCmdSet();
        string Param = "";
        if (this.ByName.Checked)
        {
            Param = "ClientName";
        }
        if (this.ByPostCode.Checked)
        {
            Param = "PostCode";
        }

        this.ClientInfor.DataSource = Database.ClientSearch(this.SearchBy.Text,Param);

    }