简单 SQL 命令不适用于特定参数

Simple SQL command wont work on specific parameters

我有一个简单的 SQL 命令,它在某些给定参数下不起作用。
例如,如果 TweetID = 59UserID = 1 它将 return 值;
但是如果 TweetID = 8UserID = 1 它不会 return 值。
有人能找出原因吗?

public static int GetReTweetIdFromReTweetByUserIdAndTweetId(int TweetID,int UserID)
{
    string sql = "SELECT [ReTweetID] FROM [ReTweet] WHERE [TweetID] = [@TID] AND [UserID] = [@UID]";
    OleDbConnection conn = ConnectToDb();
    OleDbCommand com = new OleDbCommand(sql, conn);
    com.Parameters.Clear();
    OleDbParameter objParamater;
    objParamater = com.Parameters.Add("[@UID]", OleDbType.Integer);
    objParamater.Direction = ParameterDirection.Input;
    objParamater.Value = UserID;
    objParamater = com.Parameters.Add("[@TID]", OleDbType.Integer);
    objParamater.Direction = ParameterDirection.Input;
    objParamater.Value = TweetID;
    OleDbDataAdapter da = new OleDbDataAdapter(com);
    DataTable dt = new DataTable();
    int id=0;
    try
    {
        conn.Open();
        da.Fill(dt);
        id = int.Parse(dt.Rows[0][0].ToString());
    }
    catch (Exception err)
    {
        throw err;
    }
    finally
    {
        da.Dispose();
        dt.Dispose();
        com.Dispose();
        conn.Close();
        conn.Dispose();
    }
    return id;
}

在 Access 数据库中使用 OleDb 时,参数名称将被忽略。您必须按照 Access 期望的顺序提供参数值。如果您 运行 来自 Access 查询设计器的查询 ...

SELECT [ReTweetID] FROM [ReTweet] WHERE [TweetID] = [@TID] AND [UserID] = [@UID]

...您将看到 Access 要求您首先为 [@TID] 提供一个值,然后为 [@UID].

提供一个值

但在您的 C# 代码中,您以相反的顺序提供参数值。

然而,可能还有其他事情混淆了这个问题,因为我不明白为什么它在 TweetID = 59 和 UserID = 1 的情况下成功了。只有 table 实际上包含一个TweetID = 1 和 UserID = 59 的行。也许确实如此。但无论哪种方式,我都建议您首先按照 Access 期望的顺序提供参数值,然后查看是否需要进行额外的代码更改。