Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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_Ms Access - Fatal编程技术网

C# 接受用户输入并使用该值作为查询的筛选器

C# 接受用户输入并使用该值作为查询的筛选器,c#,sql,ms-access,C#,Sql,Ms Access,我有一个C#应用程序(使用Visual Studio 2015 Professional构建),用于与Microsoft Access(2010)数据库(.mdb)进行接口。首先,我通常不是C#开发者,所以请原谅我的无知。我想做的似乎很简单…但我不知道如何真正完成它。我希望创建一个搜索门户,它将接受用户输入,查询数据库,并返回与所需序列号匹配的记录 我的第一个想法是在VisualStudio中创建一个查询,并使用用户输入作为查询的过滤器,但我不知道如何将其设置为查看inputB的值 我的第二个想

我有一个C#应用程序(使用Visual Studio 2015 Professional构建),用于与Microsoft Access(2010)数据库(.mdb)进行接口。首先,我通常不是C#开发者,所以请原谅我的无知。我想做的似乎很简单…但我不知道如何真正完成它。我希望创建一个搜索门户,它将接受用户输入,查询数据库,并返回与所需序列号匹配的记录

我的第一个想法是在VisualStudio中创建一个查询,并使用用户输入作为查询的过滤器,但我不知道如何将其设置为查看inputB的值

我的第二个想法是在我的C#代码中嵌套一个SQL查询……但我不知道这样做所需的语法或结构

我唯一拥有的代码是我想要使用的SQL查询,但它本质上是伪代码,我确信其中存在漏洞

SELECT ID, UnitType, UnitSN, StatusCode, Priority
FROM Units
WHERE UnitSN = inputTB;
编辑

在StackOverflow社区的几个成员的帮助下,我拼凑了一些代码,但是在datagrid中显示结果时遇到了问题。到目前为止已生成的代码:

public void Main()
    {
        string unitSN = inputTB.Text;

        string connectionString = Properties.Settings.Default.ZeusConnectionString;
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            connection.Open();

            using (OleDbCommand command = new OleDbCommand("SELECT * FROM Units WHERE UnitSN LIKE @Name", connection))
            {
                command.Parameters.Add(new OleDbParameter("Name", unitSN));

                OleDbDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    int ID = reader.GetInt32(0);
                    string Unit = reader.GetString(1);
                    string SerialNumber = reader.GetString(2);

                    //Console.WriteLine("ID = {0}, Unit = {1}, SerialNumber = {2}", ID, Unit, SerialNumber);
                    MessageBox.Show(SerialNumber);
                }
            }
        }
    }

请随意对代码进行任何编辑,因为我意识到这是一个混乱的代码,我对C#语言只有一点粗略的了解。

您可以尝试类似的方法

public DataTable Test(string connectionString)
    {
        DataTable table = null;
        try
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                SqlCommand cmd = connection.CreateCommand();
                cmd.CommandText = @"SELECT ID, UnitType, UnitSN, StatusCode, Priority
                                    FROM Units
                                    WHERE UnitSN = @inputTB;";

                cmd.Parameters.Add(new SqlParameter(@"inputTB", inputTB.Text));

                using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                {
                    table = new DataTable();
                    adapter.Fill(table);
                }
            }
        }
        catch(Exception ex)
        {
           //handle the caught exception 
        }
        return table;
    }

希望它能帮助您。

您应该使用C#获取值,然后将其传递给查询。注意,这是sql注入的一个典型案例。。您应该了解这一点。是的…这取决于搜索字段中使用的字符(单引号和双引号始终是一个很好的示例)。请将
SqlCommand cmd=connection.CreateCommand()
包装到
中,使用
永远不要放置
catch(Exception ex){}
-忽略引发的任何异常。