首先,我沒有搜索這個第一,發現了這個問題回答說:Previous Answer檢查記錄的存在,在Access數據庫中使用C#
我有這個答案的問題是,使用這種方法會導致NullReferenceException
。很明顯,代碼仍然可以用try/catch塊工作,但我一直都明白,有意使用Exception作爲控制流的手段是糟糕的設計。有沒有更好的方法來做到這一點?
爲了清楚參數,我使用OleDbConnection和OleDbCommand來讀/寫Access 2010數據庫(.accdb格式)。
下面是我目前已經使用上述答案的做法代碼:
public bool ReadAccessDb(string filePath, string queryString, bool hasRecords)
{
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
@"Data Source=" + filePath + ";" +
@"User Id=;Password=;";
using (OleDbConnection connection = new OleDbConnection(connectionString))
using (OleDbCommand command = new OleDbCommand(queryString, connection))
{
try
{
connection.Open();
int count = (int)command.ExecuteScalar();
//This works, but if no records exist it uses the Exception system to halt further action. Look for better approach.
if(count > 0)
{
hasRecords = true;
}
}
catch (System.Exception ex)
{
}
}
return hasRecords;
}
那麼你傳遞一個SELECT查詢到你的方法?如果是這樣,你可以把它包裝在一個'SELECT COUNT(*)AS n FROM()'中,看看它是否返回零。 –
我標記另一個,因爲它是一個實際的答案(因此我允許),但我確實喜歡使用SELECT語句的想法。謝謝您的幫助! –