2015-03-02 4 views
1

Я не уверен, что эта проблема имеет какое-либо отношение к моему коду или просто к настройке моей базы данных. Любые указатели были бы потрясающими!C# MS Access Database Connection System.Data.SqlClient.SqlException 'произошел в System.Data.dll

Это сообщение об ошибке, что я получаю:

enter image description here

Я пошел в «Modify Connection» и использовал инструмент «Test Connection» и говорит, что он соединяется отлично, но когда фактическая программа ничего не происходит, и я получаю ошибку.

Вот мой код:

private void btnAddCustomer_Click(object sender, EventArgs e) 
    { 
    SqlConnection CustomerInfo = new SqlConnection("Data Source=C:\\Users\\Cory\\Desktop\\DeluxWrapsWindows\\DeluxWrapsWindows\\DeluxWraps_DB.mdb"); 
    { 
    SqlCommand xp = new SqlCommand("Insert into CustomerInfo(LastName, FirstName, Email, PhoneNumber, Address, Instagram, CarMake, CarModel, AdditionalNotes) Values(@LastName, @Firstname, @Email, @PhoneNumber, @Address, @Instagram, @CarMake, @CarModel, @AdditionalNotes)", CustomerInfo); 

    xp.Parameters.AddWithValue("@LastName", txtLastName.Text); 
    xp.Parameters.AddWithValue("@FirstName", txtFirstName.Text); 
    xp.Parameters.AddWithValue("@Email", txtEmail.Text); 
    xp.Parameters.AddWithValue("@PhoneNumber", txtPhoneNumber.Text); 
    xp.Parameters.AddWithValue("@Address", txtAddress.Text); 
    xp.Parameters.AddWithValue("@Instagram", txtInstagram.Text); 
    xp.Parameters.AddWithValue("@Carmake", txtCarMake.Text); 
    xp.Parameters.AddWithValue("@CarModel", txtCarModel.Text); 
    xp.Parameters.AddWithValue("@AdditionalNotes", txtAdditionalNotes.Text); 

    CustomerInfo.Open(); 
    xp.ExecuteNonQuery(); 
    CustomerInfo.Close(); 

    } 
} 
+2

Sqlconnection следует использовать только при попытке подключения к базе данных SQL-сервера. См. Эту ссылку, чтобы узнать больше об этом виде подключения. https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection%28v=vs.110%29.aspx. Чтобы подключиться к базе данных MS Access, взгляните на этот SO-адрес http://stackoverflow.com/questions/17023861/how-to-connect-access-database-in-c-sharp. – WorkSmarter

ответ

2

Вы должны попытаться создать SqlCommand с:

SqlCommand xp = CustomerInfo.CreateCommand(); 

Смотрите этот пример:

https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlconnection.createcommand(v=vs.110).aspx

Обновление:

Попробуйте использовать OleDbConnection. См:

public DataSet GetDataSetFromAdapter(
    DataSet dataSet, string connectionString, string queryString) 
{ 
    using (OleDbConnection connection = 
       new OleDbConnection(connectionString)) 
    { 
     OleDbDataAdapter adapter = 
      new OleDbDataAdapter(queryString, connection); 

     // Set the parameters. 
     adapter.SelectCommand.Parameters.Add(
      "@CategoryName", OleDbType.VarChar, 80).Value = "toasters"; 
     adapter.SelectCommand.Parameters.Add(
      "@SerialNum", OleDbType.Integer).Value = 239; 

     // Open the connection and fill the DataSet. 
     try 
     { 
      connection.Open(); 
      adapter.Fill(dataSet); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
     // The connection is automatically closed when the 
     // code exits the using block. 
    } 
    return dataSet; 
} 

Смотреть подробнее в: https://msdn.microsoft.com/en-us/library/System.Data.OleDb.OleDbParameterCollection(v=vs.110).aspx

+0

Спасибо за совет Ренатто Мачадо! Тем не менее, я все еще получаю такую ​​же ошибку. По какой-то причине он не будет подключаться к базе данных. –

0

Это звучит, как вы пытаетесь использовать локальную базу данных или авто-имени базы данных: Синтаксис для строки подключения:

Data Source=(LocalDB)\v11.0; 
AttachDbFilename=Your local location here; 
Integrated Security=True 

Надеюсь, что помогает.

+0

Также вам нужно указать локальный сервер db verson sql server. Mine - версия v11.0. –

+0

Я использую MS Access 2010. Это первый раз, когда я попытался подключиться к базе данных, так что спасибо за вашу помощь. База данных находится на моем локальном компьютере. –

+1

В этом случае ваша строка соединения должна использовать другой драйвер, потому что вы будете использовать Microsoft.Jet.OLEDB.4.0. Ниже приведен пример строки подключения: connectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Источник данных = | DataDirectory | Northwind.mdb;" https://msdn.microsoft.com/en-us/library/hktw939c%28v=vs.85%29.aspx. Просто убедитесь, что ваш файл .mdb находится в вашем каталоге данных и замените имя на ваше собственное имя файла .mdb. –

0

Проблема заключается в том, что вы используете System.Data.Sql в качестве провайдера, когда все должно быть от System.Data.OleDb;

Однако, вы можете использовать <asp:SqlDataSource> в ASPX, чтобы подключиться к базе данных Access, но это не то же самое, что иSystem.Data.Sql.

Смежные вопросы