#sql #visual-studio-2013 #ms-access-2013
#sql #visual-studio-2013 #ms-access-2013
Вопрос:
Я хочу запустить свой SQL-запрос (InsertUser)
INSERT INTO UserList (Username, [Password], CashDeposit, UserType) VALUES (?, ?, ?, ?)
из формы Windows с использованием текстовых полей для ввода параметров, вызывающих изменения для обновления в файл базы данных MS Acess, который я сделал
Я создал табличный адаптер и добавил следующий код в свою форму
Me.UserListTableAdapter.InsertUser(UsernameTextBox.Text, PasswordTextBox.Text, CashDepositTextBox.Text, UserTypeTextBox.Text)
Ошибок нет, но код не вызывает никаких изменений в файле базы данных.Запрос работает при выполнении из конструктора запросов.
Ответ №1:
Попробуйте что-то вроде этого (обратите внимание, что это C #):
public void executeNonQuery(string sql)
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" Globals.settings.dbLocation);
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
}
Вот ссылка на статью MSDN, дающую лучший пример и объяснение: http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.executenonquery(v=vs.110).aspx
Комментарии:
1. Как запрос получает свои параметры?
2. Я не хочу использовать модель сущности. Нет ли другого способа?
3. Я не знаю. Вам нужно будет опубликовать больше вашего кода. Я бы посоветовал ознакомиться с адаптерами таблиц: msdn.microsoft.com/en-us/library/ms233822.aspx
Ответ №2:
Я выполнил следующий код, и он сработал
Dim cn As New OleDbConnection
Public newConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersJoeyDocumentsVisual Studio 2013ProjectsDalal StreetDalal StreetUsers.accdb"
Public newConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersJoeyDocumentsVisual Studio 2013ProjectsDalal StreetDalal StreetUsers.accdb"
If cn.State = ConnectionState.Closed Then
cn.Open()
End IfDim cmd As New OleDbCommand
Dim InsertMember As String = "INSERT INTO UserList (Username, [Password], CashDeposit, UserType,RegNo) VALUES ('" amp; _UsernameTextBox.Text amp; "', '" amp; _PasswordTextBox.Text amp; "','" amp; _CashDepositTextBox.Text amp; "','" amp; _UserType.Text amp; "','" amp; _TextBox1.Text amp; "')"
With cmd
.CommandText = InsertMember
.Connection = cn
.ExecuteNonQuery()
End With`