【问题标题】:Why I can't match a string using SQL and Access?为什么我无法使用 SQL 和 Access 匹配字符串?
【发布时间】:2015-04-05 20:55:57
【问题描述】:

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

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

假设我想获取所有原子序数大于 20 的元素。我的查询如下:

"Select * From Periodic Where (AtomicNumber > 20)"

这正是我想要的。但是假设我想要所有原子序数大于 20 并且目前处于气态的元素。所以我尝试了类似的东西:

"Select * From Periodic Where (AtomicNumber > 20 AND StateOfMatter = Gas)"

失败。它抛出一个错误说明:

没有为一个或多个必需参数指定值。

我知道this question。我已经尝试了一切,包括所有这些查询:

 "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();
        }

    }

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

【问题讨论】:

    标签: c# sql ms-access


    【解决方案1】:

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

    StateOfMatter = 'Gas'
    

    ` character (grave accent) 不等于 ' character (apostrophe)。

    而且由于OleDbCommand关心参数名称,它认为你的Gas 是一个参数,这就是它说的原因;

    一个更多个必需参数没有给出值。

    因为它知道如果这不是一个参数,它应该用单引号括起来。

    【讨论】:

    • 天啊!!!...大声笑,我现在觉得很愚蠢。 Pffff,我切换了'和'。嗯,谢谢xD
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    相关资源
    最近更新 更多