插入、更新、删除:ASP.NET 数据库连接教程

从数据库访问数据是任何编程语言的一个重要方面。任何编程语言都必须具备处理数据库的能力。

ASP.Net 能够处理不同类型的数据库。它可以处理最常见的数据库,例如 Oracle 和 Microsoft SQL 服务器。

它还能够与新形式的数据库配合使用,例如 MongoDB 和 MySQL.

数据库连接基础知识

ASP.Net 能够与大多数数据库配合使用。最常见的是 Oracle 和 Microsoft SQL Server。但对于每个数据库来说,其背后的操作逻辑大致相同。

在我们的示例中,我们将研究如何使用 Microsoft SQL Server 作为我们的数据库。出于学习目的,您可以下载并使用 Microsoft SQL Server Express 版本。这是由以下机构提供的免费数据库软件 Microsoft.

在使用数据库时,以下概念在所有数据库中都是通用的。

  1. 连接升级包 – 要使用数据库中的数据,显然第一步就是连接。数据库连接通常由以下参数组成。
    1. 数据库名称或数据源 – 第一个重要参数是数据库名称。每个连接一次只能与一个数据库一起工作。
    2. 资历 – 下一个重要方面是“用户名”和“密码”。这用于建立与数据库的连接。
    3. 可选参数 – 您可以指定 .net 如何处理数据库连接的可选参数。例如,可以指定连接应保持活动状态的时间长度的参数。
  2. 从数据库中选择数据 – 一旦建立连接,就会从数据库中提取数据。ASP.Net 能够对数据库执行“sql”选择命令。“sql”语句可用于从数据库中的特定表中获取数据。
  3. 将数据插入数据库 – ASP.Net 用于将记录插入数据库。在 ASP.Net 中指定了需要插入数据库的每一行的值。
  4. 将数据更新到数据库中 – ASP.Net 还可用于将现有记录更新到数据库中。可以在 ASP.Net 中为需要更新到数据库中的每一行指定新值。
  5. 从数据库中删除数据 – ASP.Net 还可用于从数据库中删除记录。代码被编写用于从数据库中删除特定行。

好的,现在我们已经了解了每个操作的理论部分。现在,让我们看看如何在 ASP.Net 中执行数据库操作。

ASP.NET 数据库连接

现在让我们看一下需要保留的代码以创建与数据库的连接。在我们的示例中,我们将连接到名为 Demodb 的数据库。用于连接数据库的凭据如下所示

  • 用户名 – sa
  • 密码 – demo123

让我们使用前面部分中创建的当前 Web 应用程序。

  • 开始向其中添加数据库操作。
  • 我们的示例着眼于建立一个简单的连接。此连接与 Demodb 数据库建立。此操作在页面首次启动时完成。
  • 当连接建立时,将向用户发送一条消息。该消息将表明连接已建立。

让我们按照以下步骤实现这一点。

步骤1) 首先确保您已在 Visual Studio 中打开了 Web 应用程序 (DemoApplication)。 Double 单击“demo.aspx.cs”文件输入数据库连接的代码。

ASP.NET 数据库连接

步骤2) 添加以下代码,用于建立与数据库的连接。

ASP.NET 数据库连接

namespace DemoApplication
{  
	public partial class Demo  System.Web.UI.Page  
    {  
	  protected void Page_Load(object sender, EventArgs e)  
	  {  
		string connetionString;
		SqlConnection cnn;
            
		connetionString = @"Data Source=WIN-50GP30FGO75;Initial Catalog=Demodb ;User ID=sa;Password=demol23";
			
		cnn = new SqlConnection(connetionString);
			
		cnn.Open();  
			
		Response.Write("Connection MAde");    
		conn.Close();  
			
	  }
	}
}

代码说明:-

  1. 第一步是创建变量。它将用于创建连接字符串和与 SQL Server 数据库的连接。
  2. 下一步是实际创建连接字符串。连接字符串由以下部分组成
  • 数据源 – 这是数据库所在服务器的名称。在我们的例子中,它位于一台名为 WIN-50GP30FGO75 的机器上。
  • 初始目录用于指定数据库的名称
  • 用户 ID 和密码是连接数据库所需的凭证。
  1. 接下来,我们将连接字符串分配给变量“cnn”。
  • 变量 cnn 是 SqlConnection 类型。这用于建立与数据库的连接。
  • SqlConnection 是 ASP.Net 中的一个类,用于创建与数据库的连接。
  • 要使用此类,您必须首先创建此类的对象。因此,我们在这里创建一个名为“cnn”的变量,其类型为 SqlConnection。
  1. 接下来,我们使用 cnn 变量的 open 方法打开与数据库的连接。我们向用户显示一条消息,告知连接已建立。这是通过“response.write”方法完成的。然后我们关闭与数据库的连接。

当设置了上述代码,并使用以下方式执行项目 Visual Studio中。您将获得以下输出。显示表单后,单击“连接”按钮。

输出:-

ASP.NET 数据库连接

浏览器中显示的输出消息将显示与数据库的连接已建立。

ASP.NET 使用 SqlDataReader 读取数据库

为了显示使用 Asp.Net 访问的数据,我们假设数据库中存在以下工件。

  1. 一个名为 demotb 的表。此表将用于存储各种教程的 ID 和名称。
  2. 该表将有两列,一列称为“TutorialID”,另一列称为“TutorialName”。
  3. 目前,表格将有两行,如下所示。
教程编号 教程名称
1 C#
2 网络

让我们修改代码,以便我们可以查询这些数据并在网页本身上显示信息。请注意,输入的代码是数据连接模块代码的延续。

步骤1) 我们将代码分成两部分,

  • 第一部分是构建我们的“select”语句。它将用于从数据库中读取数据。
  • 然后我们将针对数据库执行“select”语句。这将相应地获取所有表行。

ASP.NET 使用 SqlDataReader 读取数据库

代码说明:-

  1. 第一步是创建以下变量
  • SQLCommand – “SQLCommand” 是 C# 中定义的一个类。该类用于执行读取和写入数据库的操作。因此,第一步是确保我们创建该类的变量类型。然后,该变量将在从数据库读取数据的后续步骤中使用。
  • DataReader 对象用于获取 SQL 查询指定的所有数据。然后我们可以使用数据读取器逐一读取所有表行。
  • 然后我们定义两个字符串变量。一个是“SQL”,用于保存我们的 SQL 命令字符串。下一个是“Output”,它将包含所有表值。
  1. 下一步是实际定义 SQL 语句。这将用于我们的数据库。在我们的例子中,它是“从 demotb 中选择 TutorialID、TutorialName”。这将从表 demotb 中获取所有行。
  2. 接下来,我们创建命令对象,用于对数据库执行 SQL 语句。在 SQL 命令中,您必须传递连接对象和 SQL 字符串。
  3. 接下来,我们将执行数据读取器命令,它将从 demotb 表中获取所有行。
  4. 现在我们已经有了表的所有行,我们需要一种机制来逐行访问这些行。
  • 为此,我们将使用“while”语句。
  • 'while' 语句将用于一次访问数据读取器中的行。
  • 然后我们使用“GetValue”方法获取TutorialID和TutorialName的值。

步骤2) 在最后一步中,我们只需向用户显示输出即可。然后我们将关闭与数据库操作相关的所有对象。

ASP.NET 使用 SqlDataReader 读取数据库

namespace DemoApplication
{  
	public partial class Demo System.Web.UI.Page  
    {  
	  protected void Page_Load(object sender, EventArgs e)  
	  {  
		SqlCommand command;
		SqlDataReader dataReader;
		String sql, Output =" ";
		sql = "Select TutorialID,TutorialName from demotb";
		
		command = new SqlCommand(sql, cnn);
		
		dataReader = sqlquery.ExecuteReader();
		while (dataReader.Read())
		{
		  Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>";
		}
		
		Response.Write(Output); 
		dataReader.Close();
		command.dispose();
		conn.Close(); 
			
	  }
	}
}

代码说明:-

  1. 我们将继续执行代码,显示 Output 变量的值。这是使用 Response.Write 方法完成的。
  2. 最后,我们关闭与数据库操作相关的所有对象。请记住,这始终是一个好习惯。

当设置了上述代码并使用 Visual Studio 运行项目时,您将获得以下输出。

输出:-

ASP.NET 使用 SqlDataReader 读取数据库

从输出中,您可以清楚地看到程序能够从数据库中获取值。然后,数据会在浏览器中显示给用户。

使用 InsertCommand 插入数据库记录

就像访问数据一样,ASP.Net 也能够将记录插入数据库。让我们采用用于插入记录的相同表结构。

教程编号 教程名称
1 C#
2 网络

让我们更改表单中的代码,以便我们可以在表中插入以下行

教程编号 教程名称
3 VB.Net

步骤1) 作为第一步,让我们将以下代码添加到我们的程序中。以下代码片段将用于在我们的数据库中插入现有记录。

使用 InsertCommand 插入数据库记录

namespace DemoApplication
{  
	public partial class Demo System.Web.UI.Page  
    {  
	  protected void Page_Load(object sender, EventArgs e)  
	  {  
		SqlCommand command;
		SqlDataAdapter adapter = new SqlDataAdapter(); 
		String sql="";
		
		sql = "Insert into demotb(TutorialID,TutorialName) value(3, '" + "VB.Net +"')";
		
		command = new SqlCommand(sql,cnn);
		adapter.InsertCommand = new SqlCommand(sql,cnn); 
		adapter.InsertCommand.ExecuteNonQuery();

		command.Dispose(): 
		cnn.Close();
				
	  }
	}
}

代码说明:-

  1. 第一步是创建以下变量
    1. SQLCommand – 此数据类型用于定义对象。这些对象针对数据库执行 SQL 操作。此对象将保存针对我们的 SQL Server 数据库运行的 SQL 命令。
    2. DataAdapter 对象用于执行插入、删除和更新 SQL 命令
    3. 然后我们定义一个字符串变量“SQL”来保存我们的 SQL 命令字符串。
  2. 下一步实际上是定义将用于数据库的 SQL 语句。在我们的例子中,我们发出一条插入语句。这将插入 TutorialID=3 和 TutorialName=VB.Net 的记录
  3. 接下来,我们创建用于对数据库执行 SQL 语句的命令对象。在 SQL 命令中,您必须传递连接对象和 SQL 字符串
  4. 在我们的数据适配器命令中,
  • 将插入 SQL 命令关联到适配器。
  • 然后发出“ExecuteNonQuery”方法。这用于针对我们的数据库执行 Insert 语句。
  • 'ExecuteNonQuery' 方法用于 C# 对数据库发出任何 DML 语句(插入、删除和更新操作)。
  • 要在 ASP.Net 中发出任何表语句,都需要使用“ExecuteNonQuery”方法。
  1. 最后,我们关闭与数据库操作相关的所有对象。请记住,这始终是一个好习惯。

步骤2) 第二步,让我们添加与访问数据部分相同的代码。这是为了在浏览器中显示最近的表格数据。为此,我们将以下代码添加到 demo.aspx.cs 文件中。

使用 InsertCommand 插入数据库记录

namespace DemoApplication
{  
	public partial class Demo System.Web.UI.Page  
    {  
	  protected void Page_Load(object sender, EventArgs e)  
	  {  
		SqlCommand sqlquery;
		SqlDataReader dataReader;
		String Output =" ";
		sql = "Select TutorialID,TutorialName from demotb";
		
		sqlquery = new SqlCommand(sql, cnn);
		
		dataReader = command.ExecuteReader();
		while (dataReader.Read())
		{
		  Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>";
		}
		
		Response.Write(Output); 
		dataReader.Close();
		command.dispose();
		conn.Close(); 		
	  }
	}
}

当设置了上述代码并在 Visual Studio 中执行项目时,您将获得以下输出。

输出:-

使用 InsertCommand 插入数据库记录

在浏览器窗口中,您将看到行已成功插入数据库。

使用 UpdateCommand 更新数据库记录

ASP.Net 能够从数据库中更新现有记录。让我们采用上面用于插入记录的示例的相同表结构。

教程编号 教程名称
1 C#
2 网络
3 VB.Net

让我们更改表单中的代码,以便我们可以更新以下行。旧行值为 TutorialID 为“3”,Tutorial Name 为“VB.Net”。我们将其更新为“VB.Net complete”,而 Tutorial ID 的行值将保持不变。

老排

教程编号 教程名称
3 VB.Net

新行

教程编号 教程名称
3 VB.Net 完整版

步骤1) 作为第一步,让我们将以下代码添加到我们的程序中。以下代码片段将用于更新数据库中的现有记录。

使用 UpdateCommand 更新数据库记录

namespace DemoApplication
{  
	public partial class Demo System.Web.UI.Page  
    {  
	  protected void Page_Load(object sender, EventArgs e)  
	  {  
		SqlCommand command;
		SqlDataAdapter adapter = new SqlDataAdapter(); 
		String sql="";
		
		sql = "Update demotb set TutorialName='"VB.Net Complete"+"' where TutorialID=3";
		
		command = new SqlCommand(sql,cnn);
		
		adapter.InsertCommand = new SqlCommand(sql,cnn); 
		adapter.InsertCommand.ExecuteNonQuery;
		
		command.Dispose(): 
		cnn.Close();
				
	  }
	}
}

代码说明:-

  1. 第一步是创建以下变量
    1. SQLCommand – 此数据类型用于定义对数据库执行 SQL 操作的对象。此对象将保存针对我们的 SQL Server 数据库运行的 SQL 命令。
    2. dataadapter对象用于执行插入,删除和更新SQL命令
    3. 然后我们定义一个字符串变量,即 SQL,用于保存我们的 SQL 命令字符串。
  2. 下一步实际上是定义将用于数据库的 SQL 语句。在我们的例子中,我们发出“更新”语句。这会将教程名称更新为“VB.Net Complete”。TutorialID 将保持不变,值将为 3。
  3. 接下来,我们将创建命令对象。这用于针对数据库执行 SQL 语句。在 SQL 命令中,您已传递了连接对象和 SQL 字符串
  4. 在我们的数据适配器命令中,我们现在将插入 SQL 命令关联到我们的适配器。然后我们发出 ExecuteNonQuery 方法。这用于针对我们的数据库执行 Update 语句。
  5. 最后,我们关闭与数据库操作相关的所有对象。请记住,这始终是一个好习惯。

步骤2) 第二步,让我们添加与访问数据部分相同的代码。这是为了在浏览器中显示最近的表格数据。为此,我们将添加以下代码

使用 UpdateCommand 更新数据库记录

namespace DemoApplication
{  
	public partial class Demo System.Web.UI.Page  
    {  
	  protected void Page_Load(object sender, EventArgs e)  
	  {  
		SqlCommand sqlquery;
		SqlDataReader dataReader;
		String Output =" ";
		sql = "Select TutorialID,TutorialName from demotb";
		
		sqlquery = new SqlCommand(sql, cnn);
		
		dataReader = command.ExecuteReader();
		
		while (dataReader.Read())
		{
		  Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>";
		}
		
		Response.Write(Output); 
		dataReader.Close();
		command.dispose();
		conn.Close(); 		
	  }
	}
}

当设置了上述代码并使用 Visual Studio 执行项目时,您将获得以下输出。

输出:-

使用 UpdateCommand 更新数据库记录

在浏览器窗口中,您将看到数据库中的行已成功更新。

使用 DeleteCommand 删除数据库记录

ASP.Net 可以从数据库中删除现有记录。让我们采用上面用于删除记录的示例的相同表结构。

教程编号 教程名称
1 C#
2 网络
3 VB.Net 完整版

让我们更改表单中的代码,以便可以删除以下行

教程编号 教程名称
3 VB.Net 完整版

因此,让我们将以下代码添加到我们的程序中。以下代码片段将用于删除数据库中的现有记录。

步骤1) 作为第一步,让我们将以下代码添加到我们的程序中。以下代码片段将用于删除数据库中的现有记录。

使用 DeleteCommand 删除数据库记录

namespace DemoApplication
{  
	public partial class Demo System.Web.UI.Page  
    {  
	  protected void Page_Load(object sender, EventArgs e)  
	  {  
		SqlCommand command;
		SqlDataAdapter adapter = new SqlDataAdapter(); 
		String sql="";
		
		sql = "Delete demotb where TutorialID=3";
		
		command = new SqlCommand(sql,cnn);
		
		adapter.DeleteCommand = new SqlCommand(sql,cnn); 
		adapter.DeleteCommand.ExecuteNonQuery;
		
		command.Dispose(): 
		cnn.Close();
				
	  }
	}
}

代码说明:-

  1. 此代码中的关键区别在于我们现在发出删除 SQL 语句。删除语句用于删除 demotb 表中 TutorialID 值为 3 的行。
  2. 在我们的数据适配器命令中,我们现在将插入 SQL 命令关联到我们的适配器。我们还发出“ExecuteNonQuery”方法,该方法用于针对我们的数据库执行删除语句。

步骤2) 第二步,让我们添加与访问数据部分相同的代码。这是为了在浏览器中显示最近的表格数据。为此,我们将添加以下代码。

使用 DeleteCommand 删除数据库记录

namespace DemoApplication
{  
	public partial class Demo System.Web.UI.Page  
    {  
	  protected void Page_Load(object sender, EventArgs e)  
	  {  
		SqlCommand sqlquery;
		SqlDataReader dataReader;
		String Output ="";
		sql = "Select TutorialID,TutorialName from demotb";
		
		sqlquery = new SqlCommand(sql, cnn);
		
		dataReader = command.ExecuteReader();
		
		while(dataReader.Read())
		{
		  Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>";
		}
		
		Response.Write(Output); 
		dataReader.Close();
		command.dispose();
		conn.Close(); 		
	  }
	}
}

当设置了上述代码并使用 Visual Studio 执行项目时,您将获得以下输出。

输出:-

使用 DeleteCommand 删除数据库记录

将 Asp.net 控件连接到数据

我们已经了解了如何使用 ASP.Net 命令(例如 SQLCommand 和 SQLReader)从数据库中提取数据。我们还了解了如何读取表格的每一行并将其显示在网页上。

有多种方法可以将控件直接链接到表中的不同字段。目前,只有以下控件可以绑定到 ASP.Net 应用程序

  1. 复选框列表
  2. 单选按钮列表
  3. 下拉列表
  4. 列表框

让我们看一个如何在 ASP.Net 中使用控件绑定的示例。这里我们将以列表框为例。假设我们的数据库中有以下数据。

教程编号 教程名称
1 C#
2 网络
3 VB.Net 完整版

让我们使用 Listbox 控件,看看它如何自动从我们的 Demotb 表中获取数据。

让我们按照以下步骤实现这一点。

步骤1) 构建基本 Web 表单。从 Visual Studio 的工具箱中,拖放 2 个组件 - 标签和列表框。然后执行以下子步骤;

  1. 将第一个标签的文本值作为 TutorialID
  2. 将第二个标签的文本值设置为TutorialName

执行上述步骤后,表单的外观如下。

将 Asp.net 控件连接到数据

步骤2) 下一步是开始将每个列表框连接到数据库表。

  1. 首先,单击教程 ID 的列表框。这将在控件的一侧弹出另一个对话框。
  2. 在对话框中,我们需要单击“选择数据源”选项。

将 Asp.net 控件连接到数据

步骤3) 然后您将看到一个对话框。这可用于创建新的数据源。数据源将代表与数据库的连接。选择“新数据源”选项。

将 Asp.net 控件连接到数据

步骤4) 在最后一步选择新的数据源后,将出现以下屏幕。这里我们需要提到我们想要创建的数据源类型。

  1. 选择数据库选项以使用 SQL Server 数据库。
  2. 现在我们需要为数据源命名。这里我们将其命名为 DemoDataSource。
  3. 最后,我们点击“确定”按钮进入下一个屏幕。

将 Asp.net 控件连接到数据

步骤5) 现在我们需要创建与数据库的连接。在下一个屏幕中,单击“新建连接”按钮

将 Asp.net 控件连接到数据

步骤6) 接下来您需要添加凭据以连接到数据库。

  1. 选择 SQL Server 所在的服务器名称
  2. 输入用户id和密码连接数据库
  3. 选择数据库为“demotb”
  4. 单击“确定”按钮。

将 Asp.net 控件连接到数据

步骤7) 在下一个屏幕上,您将能够看到 Demotb 表。只需单击下一步按钮即可接受默认设置。

将 Asp.net 控件连接到数据

步骤8) 您现在可以在下一个屏幕上测试连接。

  1. 单击“测试查询”按钮,看看是否能够从表中获取值
  2. 单击“完成”按钮以完成向导。

将 Asp.net 控件连接到数据

步骤9) 现在在最后一个屏幕上,您可以单击“OK”按钮。这会将 TutorialID 列表框绑定到“demotb”表中的 TutorialID 字段名称。

将 Asp.net 控件连接到数据

步骤10) 现在是时候将教程名称列表框绑定到教程名称字段了。

  1. 首先,单击教程名称列表框。
  2. 接下来,在列表框侧面出现的对话框中从数据源中进行选择。

将 Asp.net 控件连接到数据

步骤11) 在下一个屏幕中选择数据源时,您将看到 DemoDataSource。

  1. 选择演示数据源
  2. 点击确定按钮。

将 Asp.net 控件连接到数据

如果按照上述所有步骤执行,您将获得下面提到的输出。

输出:-

将 Asp.net 控件连接到数据

从输出中,你可以看到列表框分别显示教程 ID 和教程名称

结语

  • ASP.Net 可以与以下数据库配合使用 Oracle 和 Microsoft SQL Server.
  • ASP.Net 具有使用数据库所需的所有命令。这涉及建立与数据库的连接。您可以执行选择、更新、插入和删除等操作。
  • ASP.Net 中的 datareader 对象用于保存数据库返回的所有数据。ASP.net 中的 While 循环可用于一次读取一行数据。
  • 数据适配器对象用于执行插入、删除和更新等 SQL 操作。
  • ASP.Net 可以将控件绑定到表中的各个字段。通过在 ASP.Net 中定义数据源来绑定它们。数据源用于从数据库中提取数据并将其填充到控件中。