2015-12-15 2 views
1

Я думаю, что мне трудно подключиться к моей базе данных, потому что она не обновляется, когда она должна. Я не уверен, почему это так. Вот мой .aspx.cs файл:Моя база данных доступа не обновляется (ASP.NET)

public partial class addClass : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    private static OleDbConnection GetConnection() 
    { 
     String connection; 
     connection = @"connectionstring"; 

     return new OleDbConnection(connection); 

    } 
    string one = "one"; 
    protected void submitButton_Click(object sender, EventArgs e) 
    { 
     OleDbConnection myConnection = GetConnection(); 


     try 
     { 

      myConnection.Open(); 
      String myQuery = "INSERT INTO Yoga Class([ClassName], [Level], [Duration], [Capacity], [Description]) values ('" + 
       classNameTextBox.Text + "','" + levelDropDownList.SelectedItem.Text + "','" + durationDropDownList.SelectedItem.Text + "','" + capacityDropDownList.SelectedItem.Text + 
       "','" + descriptionTextBox.Text + "');"; 

      String myQuery2 = "INSERT INTO YogaTeacher([TeacherID]) values('" +one+ "');"; 


      OleDbCommand myCommand = new OleDbCommand(myQuery, myConnection); //get rid of parameters 



      myCommand.ExecuteNonQuery(); 

      myConnection.Close(); 
     } 

     catch 
     { 
      Response.Write("Form did not submit due to an error"); 
     } 

     finally 
     { 
      myConnection.Close(); 
     } 
    } 



    } 
} 

Я думаю, что причина его не обновляется, потому что столбец teacherID в таблице «Йога класса» является внешним ключом из другой таблицы. Сообщение об ошибке в выражении «catch» отображается, когда я нажимаю кнопку «Отправить». Я прав? И если я могу изменить свой код, чтобы он работал?

Любая помощь приветствуется

Спасибо

+0

Помните, я спрашиваю, почему вы используете Microsoft Access? Я не видел, чтобы кто-то использовал базу данных доступа для хранения данных в приложении за десятилетие, ее обычно не считают хорошая идея. Если это не для работы и требования к работе, вы не можете контролировать. Лучшие варианты включают SQLite, Sql Server Express, Sql Server Compact Edition, PostGr eSQL, MySql или даже nosql, такие как MongoDB. Или, может быть, это класс колледжа, и я действительно надеюсь, что классы колледжа еще не изучают базы данных Microsoft Access в классах C#. –

+0

Этот код является безумным, уязвимым для SQL-инъекции. Это практически попрошайничество, чтобы его взломали. –

+0

Это только для проекта колледжа, но я ценю совет – Reggie

ответ

0

Ваша строка соединения является недействительным. Вы должны это установить в строке «ConnectionString», и она должна быть полной отформатированный надлежащего Строка соединения: такие, как

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb; 
Persist Security Info=False;" 
+0

Это пример строки подключения. В моем реальном файле у меня есть правильный путь к файлу. – Reggie

+0

Это вероятный UAC. Это файл базы данных доступа, если для этого требуются повышенные разрешения, тогда ваш процесс, выполняющий это, должен запускаться как администратор для его открытия. Предоставьте процессу/пользователям доступ к файлу приложения. Запустите визуальную студию как администратор, затем откройте свой проект и посмотрите, работает ли он, чтобы проверить эту теорию. –

+0

Спасибо за предложение, но оно не сработало. Это расстраивает. – Reggie

1

Ваш код: Строка myQuery = «INSERT INTO Йога класса ... имя таблицы

+0

хорошо замечен, но это не помогло решить проблему – Reggie

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