Я сомневаюсь, что в вашей системе установлено более одного glibc. Но ldd -v <path/to/gcc-4.x>
должен предоставить вам glibc.
Нет, это небезопасно, приведение никогда не безопасно, и оно может взорваться в любое время, когда ваше приложение работает. Хотя SqlConnection
действительно вытекает из DbConnection
, вам не гарантируется, что database.CreateConnection()
вернет SqlConnection
, поскольку это может быть параметризовано в файле конфигурации. Кроме того, почему вам нужно привести к SqlConnection
? Всегда лучше работать с классами, которые находятся выше в иерархии, чтобы избежать связывания вашего кода с конкретной реализацией, которая сделает ваш код невозможным для тестирования в изоляции.
В то время как EnterpriseLibrary неплохо справляется с абстракцией, вы убиваете всех с помощью этого состава. Также вы должны убедиться, что одноразовые ресурсы всегда располагаются должным образом. Как об этом вместо этого:
Database database = DatabaseFactory.CreateDatabase("connection string");
using (var conn = database.CreateConnection())
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT id FROM foo";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// TODO: work with the results here
}
}
}
Таким образом, ваш код менее хрупок к изменениям базы данных в файле конфигурации. Ну, конечно, у вас все еще есть этот код SQL, и есть ORM, которые позаботятся о такой ситуации. Они также позволят вам сосредоточиться на реальном домене вашего приложения, вместо того, чтобы тратить время на написание SQL-запросов и приведение от одного поставщика базы данных к другому. Но для простого приложения это нормально.
Это зависит от баз данных, которые вы используете в вашем приложении. Из написанного вами кода похоже, что используется только SQL Server. Если это так, то вы можете безопасно разыграть DbConnection
- SqlConnection
. Фактически DbConnection
является базовым классом для любого другого соединения с базой данных. В вашем случае это SqlConnection
(который используется для работы с базой данных SQL Server
), также есть разные базы данных, такие как Oracle
, Mysql
и т. Д., И их провайдеры обычно имеют собственные классы для соединений. Поэтому, если ваше приложение использует другие базы данных или может использовать его в будущем, такое использование небезопасно.