C# 无法从DB查询更新DataGridView的行
我在将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 %"+
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);
}