Создание исполняемого SQL-запроса из формы Windows в Visual Basic

#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`