В настоящее время у меня есть следующий метод, который работает для моих конкретных двух баз данных, но я не уверен, является ли это правильным способом достижения моей цели перечисления имен столбцов, или он немного хакерский.
Меня беспокоит то, что SQL Server использует TABLE_CATALOG
для имени базы данных, а MySQL использует TABLE_SCHEMA
.Я не уверен, могу ли я рассчитывать на это в любой ситуации.
private string GetTableColumnsQuery(ConnectionStringSettings conString, string tableName)
{
string query;
if (conString.Name == "mysql")
{
var con = new MySqlConnectionStringBuilder(conString.ConnectionString);
query = $"select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='{tableName}' and TABLE_SCHEMA='{con.Database}'";
}
else
{
var con = new SqlConnectionStringBuilder(conString.ConnectionString);
query = $"select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='{tableName}' and TABLE_CATALOG='{con.Database}'";
}
return query;
}
Будет ли это надежно работать для всех баз данных SQL Server и MySQL, и я должен изменить это определенным образом, чтобы избежать ошибки, котораяЯ пропускаю?
И наконец, если код никоим образом не предназначен для пользователя, все еще рекомендуется готовые утверждения?
Спасибо.