2012-05-29 3 views
1

Я пробовал много разных команд и аранжировок для этого. Это простая программа для ввода новых контактов в базу данных. Моя первая база данных. У меня есть простые текстовые поля, которые принимают только буквы, а затем почтовый индекс, который будет принимать только числа. Не уверен точно, почему мой «executenonquery()» говорит: «Свойство Connection не было инициализировано». Что мне не хватает?свойство соединения не инициализировано

string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Documents and Settings\\Sales\\My Documents\\Google Drive\\Home\\Contacts\\Contacts.accdb"; 
     string command = "INSERT INTO [Contacts] (First Name, Last Name, Address, City, State/Province, ZIP/Postal Code) VALUES (@fname, @lname, @address, @city, @state, @zip)"; 
     OleDbConnection conn = new OleDbConnection(connection); 
     OleDbCommand comm = new OleDbCommand(); 
     OleDbDataAdapter da = new OleDbDataAdapter(); 
     conn.Open(); 
     comm.Parameters.AddWithValue("@First Name", fname); 
     comm.Parameters.AddWithValue("@Last Name", lname); 
     comm.Parameters.AddWithValue("@Address", address); 
     comm.Parameters.AddWithValue("@City", city); 
     comm.Parameters.AddWithValue("@State/Province", state); 
     comm.Parameters.AddWithValue("@ZIP/Postal Code", zip); 
     comm.ExecuteNonQuery(); 
     conn.Close(); 
+1

Вы пытались удалить двойные косые черты из строки подключения? Кроме того, вы можете столкнуться с ошибкой в ​​своем SQL-заявлении, потому что я не думаю, что «State/Province» или «ZIP/Postal Code» являются допустимыми именами столбцов. Попробуйте окружить их квадратными скобками '[]' – jaressloo

+0

, который дает «неизвестную escape-последовательность». – marcmiller2007

ответ

3

Изменить эту строку:

OleDbCommand comm = new OleDbCommand(); 

... к этим двум направлениям:

OleDbCommand comm = new OleDbCommand(conn); 
comm.commandText = command; 

Ваш объект команды должен иметь ссылку на открытое соединение (которое мы получаем от используя конструктор, который принимает объект соединения), и ваш объект команды также должен иметь свой набор свойств текста команды (иначе система не знает, какой запрос вы пытаетесь запустить).

Редактировать: кричит, не использовал этих парней в какое-то время. Все, что вам действительно нужно, это одна строка:

OleDbCommand comm = new OleDbCommand(command, conn); 
+0

теперь говорит, что OleDbCommand comm = новый OleDbCommand (conn); имеет некоторые недопустимые аргументы. – marcmiller2007

+1

И удалите, что OleDbDataAdapter не нужен и не используется – Steve

+0

@ marcmiller2007: Я обновил свой ответ. – MusiGenesis