【问题标题】:INSERT from ASP.NET to MS Access从 ASP.NET 插入到 MS Access
【发布时间】:2009-01-19 22:29:33
【问题描述】:

我们正在尝试为 Intranet 构建帮助台票务系统。决定使用 Visual Studio 2008 Express 的 ASP .NET (C#)(认为如果需要,我们有一个完整的版本)。没什么特别的,几页抓取 NTLM 信息、系统信息并将其与问题一起存储在数据库中。目标是让它变得简单,但是管理员不希望我使用我们的 SQL Server 2000 后端,而是希望我使用 MS Access。我的 GridView 和连接运行顺畅。可以拉选择查询,直到我心满意足。但是,将几个变量与提交按钮上的文本框绑定到一个 INSERT 语句中。我什至不知道从哪里开始使用 MS Access。每个 Internet 示例都在 VB .NET 中,而且似乎是 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();

【问题讨论】:

  • 为什么管理员不想使用免费的 SQL Server Express Edition?
  • 我们拥有 SQL Server 2000 Enterprise,并在 MS Dynamics 方面进行了大量投资。这一切都是为了不改变现在工作的东西,也没有备用机器。
  • 这并不理想,但如果获取另一台机器有问题,您可以在 Web 服务器上运行 SQL Express。
  • 您的帖子实际上很混乱,因为您根本没有使用 Access,只是使用 Jet 数据库作为数据存储。
  • “管理员希望我使用 MS Access” - 为什么会让人困惑?我敢打赌,您也使用 MS Access 来管理您的 Jet 数据存储。哦,从技术上讲,你的意思是“DBMS”而不是“数据库”,尽管我没有被你使用的白话弄糊涂。

标签: c# asp.net sql-server visual-studio ms-access


【解决方案1】:

管理员疯了。 Access 是一个in-process 数据库,因此不太适合用户创建或更新记录的网站。

但就创建 INSERT 查询而言,Access 并不比其他任何事情都难。如果您无法为 Access 创建 INSERT 查询,您可能也会在使用 SQL Server 时遇到问题。

【讨论】:

    【解决方案2】:

    我也建议使用 SQL Server,但考虑到您的问题: 为 Access 编写 INSERT 查询有什么问题? 您应该使用 System.Data.OleDb 命名空间中的类:

    • OleDbConnection
    • OleDbCommand

    Quick'n 脏代码(不编译):

    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 语句中出现的顺序将参数添加到集合中)。

    【讨论】:

    • 问题是我通常修复帧中继问题!谢谢你的例子。
    【解决方案3】:

    不要打扰 Access。使用 SQL Server Express。它还有一个管理工具,看起来像完整的 SQL Server 管理工具。

    【讨论】:

      【解决方案4】:

      Access 有它的位置,通常可以做的比大多数人认为的要多,但是是的,您想以多种形式(例如 SQL Server Express)或其他适当的“服务器”数据库使用 SQL Server对于这样的网络应用。

      【讨论】:

        猜你喜欢
        • 2017-03-05
        • 2016-09-14
        • 1970-01-01
        • 1970-01-01
        • 2016-09-03
        • 1970-01-01
        • 1970-01-01
        • 2016-11-03
        • 1970-01-01
        相关资源
        最近更新 更多