ASP.NET и SQL - вставка данных в более чем одну таблицу? - PullRequest
1 голос
/ 15 декабря 2010

Так что я знаю, что подобные вопросы задавались ранее, но я не мог найти четкого ответа для моей конкретной ситуации. Я использую ASP.NET (в Visual Web Developer), и мне нужно вставить данные из одной формы в две отдельные таблицы. Это мой источник данных:

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/courseinfo.mdb" 
    SelectCommand="SELECT * FROM [tableCourse], [tableFaculty]"
    InsertCommand="INSERT INTO [tableCourse] 
    ([department], [name_first], [name_last], [prefix], 
    [course_number], [credits], [title], [description])
    VALUES (?, ?, ?, ?, ?, ?, ?, ?); INSERT INTO [tableFaculty] ([name_first], [name_last], [phone], [email])
    VALUES (?, ?, ?, ?)">

Итак, вы видите, что я попытался использовать два оператора вставки, и он просто возвращается с ошибкой, говорящей, что после оператора SQL есть дополнительные символы. Я пытался снять точку с запятой, а потом там говорится, что мне не хватает точки с запятой. Можно ли вставить в две таблицы одновременно, используя этот элемент управления? И если нет, то как мне обойти это?

UPDATE:

Хорошо, попробовал это в коде, но я не думаю, что сделал это правильно, теперь это дает мне эту ошибку:

Ошибка сервера в приложении / CCC. Индекс или первичный ключ не могут содержать значение Null. Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и месте ее возникновения в коде.

Сведения об исключении: System.Data.OleDb.OleDbException: индекс или первичный ключ не могут содержать значение Null.

Ошибка источника:

Line 87: 
Line 88:         AccessDataSource1.InsertCommand = "INSERT INTO [tableCourse] ([department], [name_first], [name_last], [prefix], [course_number], [credits], [title], [description]) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
Line 89:         AccessDataSource1.Insert()
Line 90: 
Line 91:         AccessDataSource1.InsertCommand = "INSERT INTO [tableFaculty] ([name_first], [name_last], [phone], [email]) VALUES (?, ?, ?, ?)"

Выделена строка 89. Так что я думаю, что он пытается вставить, но по какой-то причине значения равны нулю, он не берет значения из текстовых полей. Я, вероятно, пропустил что-то очевидное, я не знаю, я действительно новичок в этом.

1 Ответ

1 голос
/ 16 декабря 2010

Почему бы вам не попробовать его в коде?

AccessDataSource1.InsertCommand = "First INSERT Statement";
AccessDataSource1.Insert();

AccessDataSource1.InsertCommand = "Second INSERT Statement";
AccessDataSource1.Insert();
...