Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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# 如何通过文本框搜索表格?_C#_Sql Server - Fatal编程技术网

C# 如何通过文本框搜索表格?

C# 如何通过文本框搜索表格?,c#,sql-server,C#,Sql Server,我有一个从文本框中搜索数据库的查询。 我的问题是如何将搜索结果一列一列地插入到分隔的文本框中,我的意思是每一列进入一个文本框 private void searchbtn_Click(object sender, EventArgs e) { SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\hry\Documents\Visual Studio 2010\Projects\Kargozini\Kargoz

我有一个从文本框中搜索数据库的查询。 我的问题是如何将搜索结果一列一列地插入到分隔的文本框中,我的意思是每一列进入一个文本框

private void searchbtn_Click(object sender, EventArgs e)
{
     SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\hry\Documents\Visual Studio 2010\Projects\Kargozini\Kargozini\khadamat.sdf");

     try
     {
         con.Open();
         string SearchQuerry = "SELECT ID, radif, Name, Type, Description, Price FROM Users WHERE ID = '"+searchtxt.Text+"'" ;
         SqlCeCommand com = new SqlCeCommand(SearchQuerry,con);
         com.ExecuteNonQuery();
         con.Close();
     }
     catch (SqlCeException ex)
     {
         MessageBox.Show(ex.Message);
     }
}

我假设,您的搜索将只返回一行。 您可以使用datareader来实现这一点。我用以下代码修改了您的函数:

private void searchbtn_Click(object sender, EventArgs e)
{
     SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\hry\Documents\Visual Studio 2010\Projects\Kargozini\Kargozini\khadamat.sdf");

     try
     {
         con.Open();
         string SearchQuerry = "SELECT ID, radif, Name, Type, Description, Price FROM Users WHERE ID = '"+searchtxt.Text+"'" ;
         SqlCeCommand com = new SqlCeCommand(SearchQuerry,con);

         SqlCeDataReader sqlReader = com.ExecuteReader();

         while (sqlReader.Read())
        {
            txtID.text = sqlReader.GetValue(0).ToString();
            txtRadif.text = sqlReader.GetValue(1).ToString();
            txtName.text = sqlReader.GetValue(2).ToString();
        }

        sqlReader.Close();
        com.Dispose();
        con.Close();
     }
     catch (SqlCeException ex)
     {
         MessageBox.Show(ex.Message);
     }
}
注意:您的代码易受sqlinjection攻击。学习避免它的方法。

尝试以下方法:

private void searchbtn_Click(object sender, EventArgs e)
{
        SqlConnection sql = new SqlConnection("Your String Connection");
        SqlDataAdapter adapter = new SqlDataAdapter(@"Select Name, FileName From Table Where Name Like @Name", sql); 
        adapter.SelectCommand.Parameters.AddWithValue("@Name", string.Format("%{0}%", textBox1.Text));
}

select查询可以返回多少行。首先使用参数化查询,以便避免。然后看看这个,我忘了提到我使用本地数据库,这行代码是“SqlDataReader sqlReader=com.ExecuteReader();”我有此错误错误1无法将类型“System.Data.SqlServerCe.SqlCeDataReader”隐式转换为“System.Data.SqlClient.SqlDataReader”C:\Users\hry\Documents\Visual Studio 2010\Projects\Kargozini\searchform.cs 30 43 KargoziniTry在SqlDataReader=com.ExecuteReader()中将SqlDataReader更改为SqlCeDataReader;我还有一个问题,文本框方法只适用于我有一个返回值的位置,我的意思是当我有多个返回值时,例如当我的选择查询有多个返回值时,我的问题是如何在消息框中显示它