ВСТАВИТЬ из ASP.NET в MS Access - PullRequest
2 голосов
/ 20 января 2009

Мы пытаемся создать систему заявок в службу поддержки только для интранета. Выбор ASP .NET (C #) с Visual Studio 2008 Express (думаю, у нас есть полная версия, если она нам понадобится). Ничего особенного, пара страниц, собирающих информацию NTLM, системную информацию и сохраняющих ее вместе с проблемой в базе данных. Цель состоит в том, чтобы упростить процесс, но вместо использования нашего сервера SQL Server 2000 администратор хочет, чтобы я использовал MS Access. У меня GridView и соединения работают гладко. Может тянуть выбранные запросы, пока мое сердце не будет удовлетворено. Однако, связывая пару переменных с текстовым полем на кнопке отправки, скажем, в выражении INSERT ... ну, я даже не знаю, с чего начать с MS Access. Каждый интернет-пример в VB .NET plus, кажется, вручную кодирует то, что Visual Studio уже сделал для меня в несколько кликов.

Будет ли MS Access слишком сложным для всего, что мы хотим сделать? Если нет, то где мы начнем просто отправлять эти данные в таблицы?

Редактировать: После нескольких тренировок у нас работает OleDB. Это не красиво, да, SQL Server был бы великолепен, но иногда нужно просто играть в мяч.

Редактировать: Любой, кто ищет фактический закодированный ответ, вот вам. Там должны быть другие в той же лодке.

    string userIP = Request.UserHostAddress.ToString();
    string userDNS = Request.UserHostName.ToString();
    string duser = Request.ServerVariables["LOGON_USER"];  //NTLM Domain\Username
    string computer = System.Environment.MachineName.ToString(); //Computer Name
    string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\helpdesk.MDB;";

    OleDbConnection conn = new OleDbConnection(connectionString);
    conn.Open();
    OleDbCommand cmd = new OleDbCommand();
    cmd.Connection = conn;
    cmd.CommandText = "INSERT INTO ticketing ([user], [comp], [issue]) VALUES (@duser, @computer, @col3)";
    cmd.Parameters.Add("@duser", OleDbType.VarChar).Value = duser;
    cmd.Parameters.Add("@computer", OleDbType.VarChar).Value = computer;
    cmd.Parameters.Add("@col3", OleDbType.LongVarChar).Value = TextBox1.Text;
    cmd.ExecuteNonQuery();
    conn.Close();

Ответы [ 4 ]

5 голосов
/ 20 января 2009

Админ сумасшедший. Access - это база данных in-process, и поэтому она не очень подходит для веб-сайтов, где пользователи будут создавать или обновлять записи.

Но что касается создания запросов INSERT, Access не сложнее, чем все остальное. Если вы не можете создавать INSERT-запросы для Access, у вас, вероятно, также будут проблемы с SQL Server.

2 голосов
/ 20 января 2009

Я также предлагаю использовать SQL Server, но учитывая вашу проблему: В чем ваша проблема при написании INSERT-запроса для Access? Вы должны использовать классы, которые вы найдете в пространстве имен System.Data.OleDb:

  • OleDbConnection
  • OleDbCommand

Быстрый грязный код (вообще не скомпилированный):

OleDbConnection conn = new OleDbConnection (connectionString);

OleDbCommand command = new OleDbCommand();
command.Connection = conn;
command.CommandText= "INSERT INTO myTable (col1, col2) VALUES (@p_col1, @p_col2)";
command.Parameters.Add ("@p_col1", OleDbType.String).Value = textBox1.Text;
...
command.ExecuteNonQUery();

Однако есть некоторые оговорки с классами OleDb (например, добавление параметров в коллекцию в том порядке, в каком они встречаются в вашем операторе SQL, например).

0 голосов
/ 11 января 2011

У доступа есть свое место, и он обычно может делать больше, чем полагает большинство людей, но да, вы хотите использовать SQL Server в одной из его многочисленных форм (например, SQL Server Express) или в другой подходящей «серверной» базе данных. для такого веб-приложения.

0 голосов
/ 20 января 2009

Не связывайтесь с Access. Используйте SQL Server Express. Для этого также есть инструмент администратора, который выглядит как полноценный инструмент управления SQL Server.

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