1
我想檢查一個表是否存在於Microsoft SQL Server中,但不知何故我使用的函數總是返回它不存在,並且輸出沒有指定一個異常被拋出。Microsoft SQL Server CE檢查表是否存在
這發生在我創建表(這是預期的)和創建表(這不是預期的)之前。
這是我使用的功能:
/// <summary>
/// Checks if a certain Sql Server Table exists
/// </summary>
/// <param name="_databasename">The name of the database</param>
/// <param name="_password">The password of the database</param>
/// <param name="_tablename">The name of the table to check</param>
/// <returns>
/// 'true' if table exists
/// 'false' if table not exists or if an exception was thrown
/// </returns>
public Boolean TableExists(String _databasename, String _password, String _tablename)
{
if (!_databasename.Contains(".sdf")) { _databasename = _databasename + ".sdf"; }
try
{
String connectionString = "DataSource=" + _databasename + "; Password=" + _password;
SqlCeConnection conn = new SqlCeConnection(connectionString);
if (conn.State==ConnectionState.Closed) { conn.Open(); }
using (SqlCeCommand command = conn.CreateCommand())
{
command.CommandType = CommandType.Text;
command.CommandText = "SELECT * FROM Information_Schema.Tables WHERE TABLE_NAME = '" + _tablename + "'";
Int32 count = Convert.ToInt32(command.ExecuteScalar());
if (count == 0)
{
Debug.WriteLine("Table " + _tablename + " does not exist.");
return false;
}
else
{
Debug.WriteLine("Table " + _tablename + " exists.");
return true;
}
}
}
catch(Exception _ex)
{
Debug.WriteLine("Failed to determine if table " + _tablename + " exists: " + _ex.Message);
return false;
}
}
有清楚的是我丟失的東西在這裏,但我似乎無法找出那是什麼。
這仍然不適用於我。它不斷返回表不存在。 –
然後您應該檢查數據庫名稱。你是否使用Visual Studio並且將sdf文件的Copy Always設置爲true? – Steve
我正在使用SharpDevelop,併爲我的項目使用私有數據庫。至於複製總是;我沒有將它設置爲true,但我不知道它是否默認設置爲true。 –