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

从数据库访问数据是任何编程语言的重要方面。任何编程语言都需要能够处理数据库。

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

它还可以处理新型数据库,如 MongoDB 和 MySQL。

数据库连接基础

ASP.NET 能够处理大多数数据库。最常见的是 Oracle 和 Microsoft SQL Server。但对于每个数据库,处理它们背后的逻辑大部分是相同的。

在我们的示例中,我们将以 Microsoft SQL Server 作为我们的数据库。出于学习目的,您可以下载并使用 Microsoft SQL Server Express Edition。这是 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) 首先,确保您的 Web 应用程序 (DemoApplication) 在 Visual Studio 中已打开。双击“demo.aspx.cs”文件以输入数据库连接的代码。

ASP.NET Database Connections

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

ASP.NET Database Connections

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 的机器上。
  • Initial Catalog 用于指定数据库名称
  • UserID 和 Password 是连接数据库所需的凭据。
  1. 接下来,我们将连接字符串分配给变量“cnn”。
  • 变量 cnn 的类型是 SqlConnection。这用于建立数据库连接。
  • SqlConnection 是 ASP.NET 中的一个类,用于建立数据库连接。
  • 要使用此类,您必须首先创建此类的一个对象。因此,这里我们创建了一个名为“cnn”的变量,其类型为 SqlConnection。
  1. 接下来,我们使用 cnn 变量的 open 方法打开数据库连接。我们向用户显示一条消息,表明连接已建立。这通过“response.write”方法完成。然后我们关闭数据库连接。

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

输出:-

ASP.NET Database Connections

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

ASP.NET 使用 SqlDataReader 读取数据库

为了展示通过 Asp.Net 访问的数据,我们假设数据库中有以下工件。

  1. 一个名为 demotb 的表。此表将用于存储各种教程的 ID 和名称。
  2. 该表将有两个列,一个名为“TutorialID”,另一个名为“TutorialName”。
  3. 目前,该表将包含以下两行。
TutorialID TutorialName
1 C#
2 ASP.NET

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

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

  • 第一部分是构造我们的“select”语句。它将用于读取数据库中的数据。
  • 然后我们将执行“select”语句以访问数据库。这将分别获取所有表行。

ASP.NET Read Database using SqlDataReader

代码解释:

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

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

ASP.NET Read Database using 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. 我们将继续使用 Response.Write 方法显示 Output 变量的值。
  2. 我们最终关闭所有与数据库操作相关的对象。请记住,这始终是一种好习惯。

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

输出:-

ASP.NET Read Database using SqlDataReader

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

使用 InsertCommand 插入数据库记录

就像访问数据一样,ASP.NET 也可以将记录插入数据库。让我们采用与插入记录示例相同的表结构。

TutorialID TutorialName
1 C#
2 ASP.NET

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

TutorialID TutorialName
3 VB.Net

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

Insert Database Record using 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 文件中。

Insert Database Record using 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 中执行项目时,您将获得以下输出。

输出:-

Insert Database Record using InsertCommand

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

使用 UpdateCommand 更新数据库记录

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

TutorialID TutorialName
1 C#
2 ASP.NET
3 VB.Net

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

旧行

TutorialID TutorialName
3 VB.Net

新行

TutorialID TutorialName
3 VB.Net complete

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

Update Database Record using 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 语句。在我们的案例中,我们正在发出一个“update”语句。这将将 Tutorial 名称更新为“VB.Net Complete”。TutorialID 将保持不变,值为 3。
  3. 接下来,我们将创建命令对象。这用于执行数据库的 SQL 语句。在 SQL 命令中,您已将连接对象和 SQL 字符串传递给
  4. 在我们的数据适配器命令中,我们将插入 SQL 命令与适配器关联。然后我们发出 ExecuteNonQuery 方法。这用于对我们的数据库执行 Update 语句。
  5. 我们最终关闭所有与数据库操作相关的对象。请记住,这始终是一种好习惯。

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

Update Database Record using 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 执行项目时,您将获得以下输出。

输出:-

Update Database Record using UpdateCommand

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

使用 DeleteCommand 删除数据库记录

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

TutorialID TutorialName
1 C#
2 ASP.NET
3 VB.Net complete

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

TutorialID TutorialName
3 VB.Net complete

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

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

Delete Database Record using 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. 此代码的关键区别在于,我们现在正在发出 delete SQL 语句。delete 语句用于删除 demotb 表中 TutorialID 值为 3 的行。
  2. 在我们的数据适配器命令中,我们将插入 SQL 命令与适配器关联。我们还发出“ExecuteNonQuery”方法,该方法用于对我们的数据库执行 delete 语句。

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

Delete Database Record using 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 执行项目时,您将获得以下输出。

输出:-

Delete Database Record using DeleteCommand

将 Asp.net 控件连接到数据

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

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

  1. CheckboxList
  2. RadioButtonList
  3. DropDownlist
  4. Listbox

因此,让我们看一个如何使用控件绑定的示例 ASP.NET。这里我们将以 Listbox 为例。假设我们的数据库中有以下数据。

TutorialID TutorialName
1 C#
2 ASP.NET
3 VB.Net complete

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

请遵循以下步骤来实现此目的。

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

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

一旦执行了上述步骤,窗体看起来如下。

Connecting Asp.net Controls to Data

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

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

Connecting Asp.net Controls to Data

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

Connecting Asp.net Controls to Data

步骤 4) 选择上一步中的新数据源后,将提示显示以下屏幕。在这里我们需要指定要创建的数据源类型。

  1. 选择数据库选项以处理 SQL Server 数据库。
  2. 现在我们需要为我们的数据源命名。这里我们将其命名为 DemoDataSource。
  3. 最后,我们单击“确定”按钮继续到下一个屏幕。

Connecting Asp.net Controls to Data

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

Connecting Asp.net Controls to Data

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

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

Connecting Asp.net Controls to Data

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

Connecting Asp.net Controls to Data

步骤 8) 在下一个屏幕上,您将能够测试连接。

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

Connecting Asp.net Controls to Data

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

Connecting Asp.net Controls to Data

步骤 10) 现在是时候将 Tutorial Name listbox 绑定到 Tutorial Name 字段了。

  1. 首先,单击 Tutorial Name Listbox。
  2. 接下来,在 Listbox 旁边出现的对话框中,选择“数据源”。

Connecting Asp.net Controls to Data

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

  1. 选择 DemoData Source
  2. 点击“确定”按钮。

Connecting Asp.net Controls to Data

如果以上所有步骤都按所示执行,您将获得以下输出。

输出:-

Connecting Asp.net Controls to Data

从输出中,您可以看到 listboxes 分别显示了 Tutorial ID 和 Tutorial Names。

摘要

  • ASP.NET 可以处理 Oracle 和 Microsoft SQL Server 等数据库。
  • ASP.NET 拥有处理数据库所需的所有命令。这包括建立数据库连接。您可以执行选择、更新、插入和删除等操作。
  • ASP.NET 中的 datareader 对象用于保存数据库返回的所有数据。ASP.NET 中的 While 循环可用于一次读取表行。
  • DataAdapter 对象用于执行 SQL 操作,如插入、删除和更新。
  • ASP.NET 可以将控件绑定到表中的各种字段。它们通过在 ASP.NET 中定义数据源来绑定。数据源用于从数据库中提取数据并将其填充到控件中。