簡體   English   中英

在 c# 中對 MS Access 使用 StrComp 函數執行區分大小寫的 sql 查詢

[英]Perform a case-sensitive sql query with StrComp funtion for MS Access in c#

我是 C# 的新手。我嘗試在 C# 中為 Microsoft Access 編寫區分大小寫的 sql 查詢。這是名為“EmployeeList”的表的一部分。 注意第二條記錄的“s”是小寫的:

| ID   | Name      | InternalID |
|:----:|:---------:| :---------:|
| 8    | John Smith| 52455      |
| 9    | John smith| 49         |
| ...  | ...       | ...        |

這是查詢。 我在 Access 中測試過,效果很好。

SELECT InternalID FROM EmployeeList WHERE StrComp(Name, 'John Smith', 0) = 0;

在 C# 中寫入它的正確語法是什么? 我查了很多資料,但我的代碼仍然是錯誤的:

public DataTable findInternalID(string name)
        {
            Connection.Open();
            DataTable output = new DataTable();
            OleDbCommand bdCommand = RecordConnection.CreateCommand() as OleDbCommand;
            
            StringBuilder x = new StringBuilder();
            x.AppendLine("SELECT InternalID ");
            x.AppendLine("FROM EmployeeList ");
            x.AppendLine($"WHERE StrComp(Name, @name, 0) = 0");
          
            bdCommand.CommandText = x.ToString();
            bdCommand.Parameters.AddWithValue("name", $"%{name}%");

            _dataAdapter = new OleDbDataAdapter(bdCommand);
            _dataAdapter.Fill(output);

            RecordConnection.Close();
            return output;

        }

這是測試我的 function 的主要代碼:

string name = "John Smith";
DataTable output = _accessManager.findInternalID(name);
String message;
message = output.Rows[0][0].ToString();
MessageBox.Show(message);

這段代碼給我一個錯誤:

System.IndexOutOfRangeException:“position 0 處沒有行。”

為什么沒有記錄寫入結果?

StrComp是 Access function,而不是 SQL Server function。

所以這將消除錯誤:

commandTextBuilder.AppendLine($"WHERE Name = @name");

但是,這不區分大小寫。

如果您使用較新的驅動程序,則可以使用StrComp ,如下所示:

如何為 MS Access 編寫區分大小寫的查詢?

如果這是 SQL 服務器,您需要將該列更改為區分大小寫。 這樣做的命令看起來像

ALTER TABLE <mytable>
ALTER COLUMN <mycolumn> VARCHAR(<mylength>) 
COLLATE <myencoding>

只需填空即可。 myencoding將是當前編碼的任何內容, CI替換為CS 如果您正在運行默認值,則意味着從SQL_Latin1_General_CP1_CI_ASSQL_Latin1_General_CP1_CS_AS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM