Как вставить новые записи в таблицу БД Access через веб-сайт ASP.net? - PullRequest
1 голос
/ 23 февраля 2009

Мне нужно вставить новые записи в базу данных Access.
Я использую Visual Studio 2008 и сначала создаю сайт asp.net. Я могу подключиться к информации в базе данных Access с помощью dataview или gridview и могу запросить конкретную запись (т. Е. № предложения - возвращает все детали, связанные с этим предложением).
Затем я могу отредактировать детали этого предложения, и это обновит Access Db.
Мне нужно иметь форму, которая просто вводит новые данные для нового клиента. то есть. Введите имя [____] Введите адрес [____]. Затем для этого нужно обновить базу. Используя gridview или dataview, я могу просматривать все поля, которые существуют в таблице, и редактировать их. Есть ли способ, которым я могу получить пустой шаблон gridview / dataview (который включает в себя все поля в таблице) и заполнить его, чтобы затем обновить базу данных? Спасибо

Ответы [ 2 ]

2 голосов
/ 23 февраля 2009

Обычный способ разрешить конечному пользователю добавить новую запись в базу данных - предоставить пользователю набор элементов управления для заполнения и / или выбора, например, из нескольких отмеченных текстовых полей, списков, флажков и т. Д. управления.

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

EDIT:

Чтобы ответить на ваш комментарий о том, как добавить поля в виде записи в базу данных, вы должны сделать что-то вроде следующего (это в C #)

Во-первых, настройте добавление строки подключения в раздел строки подключения в вашем файле web.config. Обычно рекомендуется устанавливать их здесь, если вы собираетесь использовать один и тот же источник данных во всем приложении, так как это избавляет вас от необходимости каждый раз записывать строку подключения

<connectionStrings> 
<add name="myConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|db1.mdb"
providerName="System.Data.OleDb" />
</connectionStrings>

Тогда в коде для вашей страницы

    protected void AddButton_Click(object sender, EventArgs e)
    {
        AddRecordToDatabase(txtCustomerName.Text, txtPlaceOfBirth.Text); 

        /*
          Where txtCustomerName and txtPlaceOfBirth are the IDs 
          of your Name and Place Of Birth textboxes, respectively.
          You may want to perform some validation on the textboxes before
          performing the insert!
        */
    }

    private void AddRecordToDatabase(string customerName, string placeOfBirth)
    {
        OleDbConnection conn;
        OleDbCommand cmd;

        using (conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString))
        {
            using (cmd = conn.CreateCommand())
            {
                cmd.CommandText = "INSERT INTO Customers(Name, PlaceOfBirth) VALUES (@name, @place_of_birth)";
                cmd.CommandType = CommandType.Text;

                cmd.Parameters.AddWithValue("@name", customerName);
                cmd.Parameters.AddWithValue("@place_of_birth", placeOfBirth);

                conn.Open();
                cmd.ExecuteNonQuery();
            }
        }
    }

Операторы using будут удалять объекты, с которыми по окончании (по сути, это блоки Try-finally).

В зависимости от версии Access может быть возможным вернуть значение после вставки, чтобы указать, была ли вставка успешной или нет (я знаком только с Access 97 - 2003). Если это возможно, вы можете использовать ExecuteScalar вместо ExecuteNonQuery, чтобы получить возвращаемое значение и ответить соответствующим образом.

В качестве очень общего совета я бы не рекомендовал Jet (ядро базы данных, которое использует Access) в качестве серверной базы данных для веб-сайта ASP.NET - взгляните на ответы на этот вопрос по причинам, почему. SQL Server 2005 Express бесплатен для использования * и является отличным выбором базы данных для веб-разработки.

* Существуют некоторые ограничения, проверьте Веб-сайт Microsoft для получения подробной информации.

2 голосов
/ 23 февраля 2009

Лучший способ - добавить таблицу прямо под сеткой и вставить в нее поля формы.

Кроме того, вы можете поместить поля формы в сетки, но вам придется дублировать их в , чтобы увидеть форму ADD, когда ваша сетка пуста.

Когда пользователь нажимает кнопку ДОБАВИТЬ, вставьте данные формы в базу данных и заново свяжите сетку, чтобы показать вновь вставленную строку.

РЕДАКТИРОВАТЬ: чтобы ответить на ваш комментарий, вам нужно будет использовать в вашем сеточном представлении, чтобы вставить «вставку формы» в шаблон FoorterTemplate. я предполагаю, что вы используете сейчас.

Опять же, я рекомендую вам поместить вашу "форму вставки" в таблицу прямо под сеткой.

Прочитайте эту статью для подробного объяснения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...