Открытие соединения с базой данных
Перед тем как приложение сможет взаимодействовать с базой данных, оно должно сначала установить соединение с сервером базы данных. Интерфейсы прикладного программирования, которые мы описываем в этой книге, преобразуют подробную низкоуровневую информацию о соединении в несколько простых объектно-ориентированных классов, что позволяет разработчику сконцентрироваться на приложении базы данных, а не на протоколах и сетевой топологии.
Открытие соединения с базой данных в ADO.NET
Для открытия соединения в ADO.NET требуется записать в объект-соединение соответственным образом форматированную строку, а затем вызвать метод Open объекта-соединения. Объект-соединение может быть одного из трех видов - OdbcConnection, SqlConnection или OleDbConnection. Объект OdbcConnection разработан для любого источника данных ODBC, а объект OleDbConnection будет работать с любым поставщиком OLE DB Provider. Чтобы доступ к данным был максимально производительным, используйте объекты-соединения, специально настроенные на конкретную платформу, например SqlConnection для Microsoft SQL Server. Формат строки соединения аналогичен для всех типов соединений. Этот формат представляет собой строку пар ключ/значение, разделенных символом «точка с запятой». Например:
ключ1=значение1; ключ2=значение2; ключЗ=значениеЗ; ...
Хотя формат идентичен для всех типов соединений, сами ключи и значения для разных типов соединений различны. Многие платформы поддерживают дополнительные атрибуты, которые можно применять в строке_соединения. За перечнем таких атрибутов обращайтесь, пожалуйста, к соответствующей документации производителя.
Ниже приводятся примеры двух строк соединения для OdbcConnection.
DSN=MyOracleDSN; UID=scott; PWD=tiger;
DRIVEFHSQL Server};SERVER=(local);UID=sa; PWD=; DATABASE=pubs;
Первая строка называет доя соединения имя источника данных (DSN) - MyOracleDSN, при этом используется имя пользователя scott и пароль tiger.
Вторая строка подключает с помощью драйвера SQL Server базу данных с именем pubs, расположенную на локальном сервере. Имя пользователя - sa, поле пароля пусто, и это указывает драйверу, что пароль для пользователя sa не нужен.
Ниже приводится пример строки соединения для объекта OleDbConnection, который соединяется с источником данных Oracle9i с помощью поставщика MSDAORA OLE DB и при этом используется пользовательское имя scott и пароль tiger.
Provider=MSDAORA;Data Source=Oracle9;User ID=scott;Password=tiger;
И наконец, пример строки соединения для объекта SqlConnection, в котором производится соединение с источником данных SQL Server на локальном сервере.
Server=(local); UID=sa;PWD=;DATABASE=pubs; Connection Timeout=60;
В табл. 5.1 - 5.3 вы найдете синонимы некоторых ключевых слов. Например, вы можете равнозначно использовать в коде слова «DSN» и «Data Source Name».
Первый этап в установлении связи в JDBC - это определение задания загрузчику классов виртуальной машины Java (Java Virtual Machine, JVM) на загрузку соответствующего драйвера JDBC.
Наиболее распространенный метод загрузки драйвера в загрузчика классов - использование статического метода forName класса Class. Этот метод дает приложениям большие возможности по изменению платформы, поскольку виртуальная машина Java загружает драйвер базы данных прямо «на ходу».
Class.forName( "имя_драйвера" );
После того как драйвер загружен, приложение может устанавливать соединение путем вызова статического метода getConnection класса JDBC DriverManager. Метод getConnection принимает три аргумента: строку соединения, имя пользователя и пароль.
Connection connection = DriverManager.getConnection(строка_соединения,
имя_пользователя, пароль);
Ниже приводятся примеры, описывающие, каким образом устанавливаются соединения с использованием JDBC с базами различных производителей, описанных в этой книге.
DB2
Class. forNameC'COM. ibm. db2. jdbc. app. DB2Driver"); Connection connection = DriverManager.getConnection( "jdbc:db2:DATABASE", "пользователь", "пароль" );
MySQL
Class. forName("org,gjt,mm,mysql.Driver"); Connection connection = DriverManager.getConnection( "jdbc:mysql://127,0,0.1:3306/DATABASE", "пользователь", "пароль" );
PostgreSQL
Class. forNameforg.postgresql.Driver"); Connection connection = DriverManager.getConnection( "jdbc:postgresql://127,0,0.1:5432/DATABASE", "пользователь", "пароль" );
Oracle
Class, forName("oracle,jdbc.driver.OracleDriver"); Connection connection = DriverManager,getConnection( "jdbc:oracle:thin:©myserver", "scott","tiger" );
SOL Server
Class.forName(
"com.microsoft.jdbc.sqlserver.SQLServerDriver "
);
Connection connection = DriverManager.getConnection( "jdbc:microsoft:sqlserver://SERVER:1433;" + "DatabaseName=pubs;", "пользователь", "пароль" );