2016-02-11 13 views
1

Server Explorer closed connection referenceКак открыть и закрыть соединение с базой данных (.db) Соединение данных, содержащееся в Server Explorer с использованием кода C# в Visual Studio?

Closed connection properties reference

Код, который следует, является уровень доступа к данным для приложения, которое пишется. Код имеет два методы делает две попытки подключения, используя OdbcConnection и OdbcDataAdapter, в файл база данных .db, который устанавливается в локальном пути к файлу и ввезен в визуальный Connections Studio Server Data Explorer:

using System.Data; 
using System.Data.Common; 
using System.Data.Odbc; 
using System.Windows.Forms; 

namespace Data.DataAccess 
{ 
    public class PatientDatabase 
    { 
     public OdbcDataAdapter ConnectAndCreateDataAdapter() 
     { 
      string selectCommand = "select * from patient"; 

      var connectionString = "Driver={SQL Anywhere 10};DBN=Training1;UID=dba;PWD=sql;Data Source=C:\\Projects\\Training\\Training1.4.2\\Training1.db;"; 

      OdbcConnection connection = new OdbcConnection(connectionString); 
      connection.Open(); 

      var dataAdapter = new OdbcDataAdapter(selectCommand, connectionString); 

      return dataAdapter; 
     } 

     public void ConnectAndPopulateDataGridView(DataGridView dataGridView) 
     { 
      BindingSource patientBindingSourceTest = new BindingSource(); 
      dataGridView.DataSource = patientBindingSourceTest; 

      string selectCommand = "SELECT patient.first_name + ' ' + patient.last_name as patient_name, patient.patient_id, patient.address, patient.city, patient.state, patient.zipcode, patient.phone, patient.notes, patient.classification_id, patient_classification.description from patient, patient_classification right join patient on patient.classification_id = patient_classification.patient_classification_id"; 

      var connectionString = "Driver={SQL Anywhere 10};DBN=Training1;UID=dba;PWD=sql;Data Source=C:\\Projects\\Training\\Training1.4.2\\Training1.db;"; 

      OdbcConnection connection = new OdbcConnection(connectionString); 
      connection.Open(); 

      var dataSet = new DataSet(); 

      var dataAdapter = new OdbcDataAdapter(selectCommand, connectionString); 

      DataTableMapping patientTableMapping = new DataTableMapping("Table", "patient"); 
      dataAdapter.TableMappings.Add(patientTableMapping); 
      patientTableMapping.ColumnMappings.Add(new DataColumnMapping("patient_id", "Patient ID")); 
      patientTableMapping.ColumnMappings.Add(new DataColumnMapping("patient_name", "Patient Name")); 
      patientTableMapping.ColumnMappings.Add(new DataColumnMapping("address", "Address")); 
      patientTableMapping.ColumnMappings.Add(new DataColumnMapping("city", "City")); 
      patientTableMapping.ColumnMappings.Add(new DataColumnMapping("state", "State")); 
      patientTableMapping.ColumnMappings.Add(new DataColumnMapping("zipcode", "Zip Code")); 
      patientTableMapping.ColumnMappings.Add(new DataColumnMapping("phone", "Phone")); 
      patientTableMapping.ColumnMappings.Add(new DataColumnMapping("notes", "Notes")); 
      patientTableMapping.ColumnMappings.Add(new DataColumnMapping("classification_id", "Classification ID")); 
      patientTableMapping.ColumnMappings.Add(new DataColumnMapping("description", "Classification")); 

      dataAdapter.Fill(dataSet); 

      patientBindingSourceTest.DataSource = dataSet.Tables["patient"].DefaultView; 

      dataGridView.Columns["Notes"].Visible = false; 
      dataGridView.Columns["Patient ID"].Visible = false; 
      dataGridView.Columns["Classification ID"].Visible = false; 

      var commandBuilder = new OdbcCommandBuilder(dataAdapter); 

      dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 
     } 
    } 
} 

теперь вещь есть, этот код работает и функционирует довольно хорошо ... но ..

Соединение с данными (база данных) начинает закрываться при открытии решения. Ссылки на изображения выше показывают, о чем я говорю.

Проблема с этим мой код не работает, если это соединение не является «Open»

connection.Open(); не открывает эту связь, даже если они имеют ту же строку соединения при создании. Открытие соединения состоит из ручной правой кнопки мыши на базе данных, перечисленной в Connections данных и нажать кнопку «Обновить»

Итак ...

Есть ли способ, что это правая кнопку мыши можно сделать с помощью кода? Могу ли я открыть соединение, как если бы я мог подключиться, чтобы сказать ... SQL Server? В противном случае, что происходит, когда я компилирую и публикую код? Сохраняется ли база данных внутри приложения и отвечает на код connection.Open(); или когда DataAdapter открывает соединение?

ответ

0

Просто нужно поместить файл базы данных в bin \ debug исходной папки проекта и изменить путь подключения к «DBF = Training1.db; UID = dba; PWD = sql», мой плохой. Извините, что потребовалось так много времени, чтобы опубликовать ответ после того, как я решил его.