如何断开ASP.NET中的数据库

 收藏

嗨,您好; 我有一个ASPX文件和一个代码隐藏的CS文件。我尝试连接到PostgreSQL,执行一些数据库问题,最后断开连接。仅举几例,我将数据库的所有记录打印到html文件中,添加一些新记录。所有这些操作都连接到aspx文件中的

这是aspx文件:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="select_data_2.aspx.cs" Inherits="_08_Veritabanlari_AD0_NET_select_data_2" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    <p>
    <%-- This button enables us to print all contens of the database to the html.--%>
    <asp:Button id="sendButon" runat="server" Text="Print the contents" OnClick="viewDatabase"></asp:Button>
    <%-- It is expected that this button disconnects us from the database but it doesn't. --%>
    <asp:Button id="closeConnect" runat="server" Text="Disconnect from database" OnClick="disconnectFromDatabase"></asp:Button>
    <%-- This button enables us to print all contens of the database to the html.--%>
    <asp:Button id="isConnected" runat="server" Text="Is connected to the Database?" OnClick="isConnectedToDatabase"></asp:Button>
    <%-- This button does not working, this is not the case now.--%>
    <asp:Button id="sendButon2" runat="server" Text="Print the contents 2(NOT WORKING)" OnClick="DATAGRIDSORGULA"></asp:Button>
    <asp:Button id="getBiggest" runat="server" Text="Get greatest id" OnClick="viewID"></asp:Button>
    </p>

    <p>
        <asp:Label ID="Label1" runat="server" Text="Enter name:"></asp:Label>
        <asp:TextBox ID="nameText" runat="server" ></asp:TextBox>
        <asp:Label ID="Label2" runat="server" Text="Enter surname:"></asp:Label>
        <asp:TextBox ID="surnameText" runat="server" ></asp:TextBox>
        <asp:Label ID="Label3" runat="server" Text="Enter salary:"></asp:Label>
        <asp:TextBox ID="cashText" runat="server" ></asp:TextBox>


    </p>

    <p>
        <asp:Button id="insertButton" runat="server" Text="Insert to database" OnClick="insertData"></asp:Button>
    </p>

    <p>
        <asp:Label ID="outputLabel" runat="server" ></asp:Label>
    </p>

     <p>
        <asp:DataGrid runat="server" ID="datagridd1" ViewStateMode="Disabled"></asp:DataGrid>
    </p>

    </div>
    </form>
</body>
</html>

这是“ select_data_2.aspx.cs”的内容。我们的重点必须是“ disconnectFromDatabase”过程,因此我完全不共享文件。

using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using Npgsql;

public partial class _08_Veritabanlari_AD0_NET_select_data_2 : System.Web.UI.Page
{
    public _08_Veritabanlari_AD0_NET_select_data_2()
    {

        this.connectToDatabase();
        this.getBiggestId();

    }

    private DataSet ds = new DataSet();
    private DataTable dt = new DataTable();
    private int id;
    private static NpgsqlConnection conn;
    private static NpgsqlCommand command;
    private NpgsqlDataReader dr;
    private string connstring;

    //this is the problemmatic procedure
    protected void disconnectFromDatabase(object nesne, EventArgs e)
    {
        try
        {

            conn.Close();
            conn.Dispose();
            conn = null;
        }
        catch (Exception msg)
        {
            // something went wrong, and you wanna know why
           // Response.Write(msg.ToString());
            throw;
        }

    }
}

我该如何克服这种情况?提前致谢。

回复
  • 小辣条 回复

    看来我无法正确描述问题:aspx文件中ID为“ closeConnect”的按钮连接到断开连接数据库无效。预期会断开连接,但无法断开连接。

  • 特困zZZ 回复

    只需移动代码以将连接关闭到打开连接的请求末尾即可。

    您的代码应遵循的基本格式

    开放式连接 在数据库中执行工作 紧密连接

  • xid 回复

    您不应该试图像这样使连接保持打开状态。您应该在打开连接的同一请求中关闭该连接。我也怀疑您的静态变量会像您想要的那样工作。 ASP.net是一个多线程环境,这意味着您仍然可以拥有这些静态变量的多个实例,每个可能打开的线程一个。通常,在ASP.Net中工作时应避免使用诸如全局静态变量或单例之类的东西。

  • reum 回复

    嗨Cherryhomesj; 谢谢您的回复。

    您不应该试图像这样使连接保持打开状态。您应该在打开连接的同一请求中关闭该连接。

    我该如何处理?在哪里可以获得信息?