C# 为什么我能';使用SQL和Access无法匹配字符串?

C# 为什么我能';使用SQL和Access无法匹配字符串?,c#,sql,ms-access,C#,Sql,Ms Access,我正在使用C#从MS Access检索数据。当我试图建立一个“收集”数字的查询时,一切都很好,但当我处理字符串时,一切都变得疯狂 基本上,我有一个模拟元素周期表的数据库。我有物质状态、密度、原子序数等栏目 假设我想得到原子序数大于20的所有元素。我的问题如下: "Select * From Periodic Where (AtomicNumber > 20)" 这正是我想要的。但是勒茨说我想要所有原子序数大于20的元素,并且目前处于气体状态。所以我尝试了以下方法: "Select * F

我正在使用C#从MS Access检索数据。当我试图建立一个“收集”数字的查询时,一切都很好,但当我处理字符串时,一切都变得疯狂

基本上,我有一个模拟元素周期表的数据库。我有物质状态、密度、原子序数等栏目

假设我想得到原子序数大于20的所有元素。我的问题如下:

"Select * From Periodic Where (AtomicNumber > 20)"
这正是我想要的。但是勒茨说我想要所有原子序数大于20的元素,并且目前处于气体状态。所以我尝试了以下方法:

"Select * From Periodic Where (AtomicNumber > 20 AND StateOfMatter = Gas)"
失败了。它抛出一个错误,声明:

没有为一个或多个必需参数提供值

我知道。我尝试了所有方法,包括所有这些查询:

 "Select * From Periodic Where (AtomicNumber > 20 AND StateOfMatter = `Gas`)"
 "Select * From Periodic Where (AtomicNumber > 20 AND StateOfMatter LIKE `Gas`)"
 "Select * From Periodic Where (AtomicNumber > 20 AND StateOfMatter = `%Gas%`)"
一切都给了我上述的错误。我花了两天时间试图解决这个问题,但没有成功

下面是我创建连接的C#代码:

private void ConnectToDataBase(string Query)
    {
        OleDbConnection DBConnection = new OleDbConnection();
        OleDbDataAdapter DataAdapter;
        DataTable LocalDataTable = new DataTable();

        try
        {
            DBConnection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\user\Documents\PeriodicTable.accdb;
                                              Persist Security Info=False";
            DBConnection.Open();
            DataAdapter = new OleDbDataAdapter(Query, DBConnection);
            // The error occurs here.
            DataAdapter.Fill(LocalDataTable);

            if (Elements.Count == 0)
            {
                return;
            }

        }
        catch (OleDbException ex)
        {
            throw new Exception("Error : " + ex.Message);
        }
        finally
        {
            DBConnection.Close();
        }

    }

问题在哪里?我如何解决?为什么匹配字符串比匹配数字困难得多

如果您的
StateOfMatter
是键入的字符,则需要将其值与单引号一起使用,如

StateOfMatter = 'Gas'
()不等于()

由于
OleDbCommand
不关心参数名称,它认为您的
Gas
是一个参数,这就是为什么它会这样说

没有为一个或多个所需参数提供值


因为它知道这是否不是参数,所以应该用单引号括起来。

OMG!!!。。。哈哈,我现在觉得自己很傻。Pffff,我切换了“和”。好的,谢谢xD