插入、更新、删除: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 提供的免费数据库软件。
在处理数据库时,以下概念在所有数据库中都是通用的。
- 连接 – 要处理数据库中的数据,第一步就是连接。数据库连接通常包含以下参数。
- 数据库名称或数据源 – 第一个重要参数是数据库名称。每次连接一次只能处理一个数据库。
- 凭据 – 下一个重要方面是“用户名”和“密码”。这用于建立到数据库的连接。
- 可选参数 – 您可以指定有关 .net 如何处理数据库连接的可选参数。例如,您可以指定一个连接应保持活动的参数。
- 从数据库选择数据 – 建立连接后,数据将从数据库中提取。ASP.NET 能够对数据库执行“sql”选择命令。“sql”语句可用于从数据库中的特定表中提取数据。
- 将数据插入数据库 – ASP.NET 用于将记录插入数据库。在 ASP.NET 中指定需要插入数据库的每一行的值。
- 将数据更新到数据库 – ASP.NET 还可用于将现有记录更新到数据库。在 ASP.NET 中指定需要更新到数据库的每一行的值。
- 从数据库删除数据 – ASP.NET 还可用于从数据库删除记录。代码用于从数据库中删除特定行。
好的,现在我们已经看到了每个操作的理论部分。现在,让我们看看如何在 ASP.NET 中执行数据库操作。
ASP.NET 数据库连接
现在让我们看一下需要放在适当位置以创建数据库连接的代码。在我们的示例中,我们将连接到一个名为 Demodb 的数据库。用于连接数据库的凭据如下
- 用户名 – sa
- 密码 – demo123
让我们使用前面章节中创建的当前 Web 应用程序。
- 开始向其添加数据库操作。
- 我们的示例演示了建立一个简单的连接。此连接已建立到 Demodb 数据库。当页面首次加载时,将执行此操作。
- 建立连接后,将向用户发送一条消息。该消息将指示连接已建立。
请遵循以下步骤来实现此目的。
步骤 1) 首先,确保您的 Web 应用程序 (DemoApplication) 在 Visual Studio 中已打开。双击“demo.aspx.cs”文件以输入数据库连接的代码。
步骤 2) 添加以下代码,将用于建立数据库连接。
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(); } } }
代码解释:
- 第一步是创建变量。它将用于创建连接字符串和 SQL Server 数据库连接。
- 下一步是实际创建连接字符串。连接字符串包含以下部分
- 数据源 – 这是数据库所在的服务器名称。在我们的情况下,它位于名为 WIN- 50GP30FGO75 的机器上。
- Initial Catalog 用于指定数据库名称
- UserID 和 Password 是连接数据库所需的凭据。
- 接下来,我们将连接字符串分配给变量“cnn”。
- 变量 cnn 的类型是 SqlConnection。这用于建立数据库连接。
- SqlConnection 是 ASP.NET 中的一个类,用于建立数据库连接。
- 要使用此类,您必须首先创建此类的一个对象。因此,这里我们创建了一个名为“cnn”的变量,其类型为 SqlConnection。
- 接下来,我们使用 cnn 变量的 open 方法打开数据库连接。我们向用户显示一条消息,表明连接已建立。这通过“response.write”方法完成。然后我们关闭数据库连接。
当设置了上述代码,并且使用 Visual Studio 执行项目时。您将获得以下输出。窗体显示后,单击“连接”按钮。
输出:-
浏览器中显示的输出消息将表明已建立数据库连接。
ASP.NET 使用 SqlDataReader 读取数据库
为了展示通过 Asp.Net 访问的数据,我们假设数据库中有以下工件。
- 一个名为 demotb 的表。此表将用于存储各种教程的 ID 和名称。
- 该表将有两个列,一个名为“TutorialID”,另一个名为“TutorialName”。
- 目前,该表将包含以下两行。
TutorialID | TutorialName |
---|---|
1 | C# |
2 | ASP.NET |
让我们更改代码,以便我们可以查询这些数据并在网页本身上显示信息。请注意,输入的代码是继数据连接模块代码之后的。
步骤 1) 让我们将代码分成两部分,
- 第一部分是构造我们的“select”语句。它将用于读取数据库中的数据。
- 然后我们将执行“select”语句以访问数据库。这将分别获取所有表行。
代码解释:
- 第一步是创建以下变量
- SQLCommand – “SQLCommand”是 C# 中定义的类。此类用于执行对数据库的读写操作。因此,第一步是确保我们创建此类的一个变量类型。然后将在后续的从数据库读取数据步骤中使用此变量。
- DataReader 对象用于获取 SQL 查询指定的所有数据。然后,我们可以使用数据读取器逐行读取所有表行。
- 然后我们定义两个字符串变量。一个是“SQL”,用于保存我们的 SQL 命令字符串。下一个是“Output”,它将包含所有表值。
- 下一步是实际定义 SQL 语句。这将用于我们的数据库。在我们的案例中,它是“Select TutorialID, TutorialName from demotb”。这将从 demotb 表中获取所有行。
- 接下来,我们创建命令对象,用于执行数据库的 SQL 语句。在 SQL 命令中,您必须传递连接对象和 SQL 字符串。
- 接下来,我们将执行数据读取器命令,该命令将从 demotb 表中获取所有行。
- 现在我们有了表的所有行,我们需要一种机制来逐行访问行。
- 为此,我们将使用“while”语句。
- “while”语句将用于一次访问数据读取器中的行。
- 然后我们使用“GetValue”方法获取 TutorialID 和 TutorialName 的值。
步骤 2) 在最后一步,我们将仅向用户显示输出。然后我们将关闭所有与数据库操作相关的对象。
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(); } } }
代码解释:
- 我们将继续使用 Response.Write 方法显示 Output 变量的值。
- 我们最终关闭所有与数据库操作相关的对象。请记住,这始终是一种好习惯。
当设置了上述代码,并在 Visual Studio 中运行项目时,您将获得以下输出。
输出:-
从输出中,您可以清楚地看到程序能够从数据库中获取值。然后将数据显示在浏览器中给用户。
使用 InsertCommand 插入数据库记录
就像访问数据一样,ASP.NET 也可以将记录插入数据库。让我们采用与插入记录示例相同的表结构。
TutorialID | TutorialName |
---|---|
1 | C# |
2 | ASP.NET |
让我们更改我们表单中的代码,以便我们可以插入以下行到表中
TutorialID | TutorialName |
---|---|
3 | VB.Net |
步骤 1) 作为第一步,让我们向程序添加以下代码。以下代码片段将用于在我们的数据库中插入现有记录。
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(); } } }
代码解释:
- 第一步是创建以下变量
- SQLCommand – 此数据类型用于定义对象。这些对象对数据库执行 SQL 操作。此对象将保存将针对我们的 SQL Server 数据库运行的 SQL 命令。
- DataAdapter 对象用于执行插入、删除和更新 SQL 命令
- 然后我们定义一个字符串变量,即“SQL”,用于保存我们的 SQL 命令字符串。
- 下一步是实际定义将用于我们的数据库的 SQL 语句。在我们的案例中,我们正在发出一个插入语句。这将插入 TutorialID=3 和 TutorialName=VB.Net 的记录
- 接下来,我们创建命令对象,用于执行数据库的 SQL 语句。在 SQL 命令中,您必须传递连接对象和 SQL 字符串。
- 在我们的数据适配器命令中,
- 将插入 SQL 命令与适配器关联。
- 然后发出“ExecuteNonQuery”方法。这用于对我们的数据库执行 Insert 语句。
- “ExecuteNonQuery”方法在 C# 中用于对数据库发出任何 DML 语句(插入、删除和更新操作)。
- 要在 ASP.NET 中发出任何表语句,需要使用“ExecuteNonQuery”方法。
- 我们最终关闭所有与数据库操作相关的对象。请记住,这始终是一种好习惯。
步骤 2) 作为第二步,让我们添加与“访问数据”部分相同的代码。这是为了在浏览器中显示最近的表数据。为此,我们将以下代码添加到 demo.aspx.cs 文件中。
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 更新数据库记录
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) 作为第一步,让我们向程序添加以下代码。以下代码片段将用于更新我们数据库中的现有记录。
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(); } } }
代码解释:
- 第一步是创建以下变量
- SQLCommand – 此数据类型用于定义用于对数据库执行 SQL 操作的对象。此对象将保存将针对我们的 SQL Server 数据库运行的 SQL 命令。
- DataAdapter 对象用于执行插入、删除和更新 SQL 命令
- 然后我们定义一个字符串变量,即 SQL,用于保存我们的 SQL 命令字符串。
- 下一步是实际定义将用于我们数据库的 SQL 语句。在我们的案例中,我们正在发出一个“update”语句。这将将 Tutorial 名称更新为“VB.Net Complete”。TutorialID 将保持不变,值为 3。
- 接下来,我们将创建命令对象。这用于执行数据库的 SQL 语句。在 SQL 命令中,您已将连接对象和 SQL 字符串传递给
- 在我们的数据适配器命令中,我们将插入 SQL 命令与适配器关联。然后我们发出 ExecuteNonQuery 方法。这用于对我们的数据库执行 Update 语句。
- 我们最终关闭所有与数据库操作相关的对象。请记住,这始终是一种好习惯。
步骤 2) 作为第二步,让我们添加与“访问数据”部分相同的代码。这是为了在浏览器中显示最近的表数据。为此,我们将添加以下代码
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 可以删除数据库中的现有记录。让我们采用上面用于删除记录的示例的相同表结构。
TutorialID | TutorialName |
---|---|
1 | C# |
2 | ASP.NET |
3 | VB.Net complete |
让我们更改我们表单中的代码,以便我们可以删除以下行
TutorialID | TutorialName |
---|---|
3 | VB.Net complete |
因此,让我们向程序添加以下代码。以下代码片段将用于删除我们数据库中的现有记录。
步骤 1) 作为第一步,让我们向程序添加以下代码。以下代码片段将用于删除我们数据库中的现有记录。
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(); } } }
代码解释:
- 此代码的关键区别在于,我们现在正在发出 delete SQL 语句。delete 语句用于删除 demotb 表中 TutorialID 值为 3 的行。
- 在我们的数据适配器命令中,我们将插入 SQL 命令与适配器关联。我们还发出“ExecuteNonQuery”方法,该方法用于对我们的数据库执行 delete 语句。
步骤 2) 作为第二步,让我们添加与“访问数据”部分相同的代码。这是为了在浏览器中显示最近的表数据。为此,我们将添加以下代码。
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 执行项目时,您将获得以下输出。
输出:-
将 Asp.net 控件连接到数据
我们已经了解了如何使用 ASP.NET 命令(如 SQLCommand 和 SQLReader)从数据库中提取数据。我们还了解了如何逐行读取表并将数据显示在网页上。
有方法可以将控件直接绑定到表中的不同字段。目前,只有以下控件可以绑定到 ASP.NET 应用程序
- CheckboxList
- RadioButtonList
- DropDownlist
- Listbox
因此,让我们看一个如何使用控件绑定的示例 ASP.NET。这里我们将以 Listbox 为例。假设我们的数据库中有以下数据。
TutorialID | TutorialName |
---|---|
1 | C# |
2 | ASP.NET |
3 | VB.Net complete |
让我们使用 Listbox 控件,看看它如何自动从我们的 Demotb 表中获取数据。
请遵循以下步骤来实现此目的。
步骤 1) 构建基本 Web 窗体。从 Visual Studio 的工具箱中,拖放 2 个组件 - 标签和 Listboxes。然后执行以下子步骤;
- 将第一个标签的文本值设置为 TutorialID
- 将第二个标签的文本值设置为 TutorialName
一旦执行了上述步骤,窗体看起来如下。
步骤 2) 下一步是开始将每个 listbox 连接到数据库表。
- 首先,单击 Tutorial ID 的 Listbox。这将弹出一个对话框到控件的侧面。
- 在对话框中,我们需要单击“选择数据源”选项。
步骤 3) 然后会显示一个对话框。这可用于创建新的数据源。数据源将表示到数据库的连接。选择“新建数据源”选项。
步骤 4) 选择上一步中的新数据源后,将提示显示以下屏幕。在这里我们需要指定要创建的数据源类型。
- 选择数据库选项以处理 SQL Server 数据库。
- 现在我们需要为我们的数据源命名。这里我们将其命名为 DemoDataSource。
- 最后,我们单击“确定”按钮继续到下一个屏幕。
步骤 5) 现在我们需要创建到数据库的连接。在下一个屏幕上,单击“新建连接”按钮
步骤 6) 接下来您需要添加连接到数据库的凭据。
- 选择 SQL Server 所在的服务器名称
- 输入用户 ID 和密码以连接到数据库
- 选择数据库为“demotb”
- 单击“确定”按钮。
步骤 7) 在下一个屏幕上,您将能够看到 Demotb 表。只需单击“下一步”按钮即可接受默认设置。
步骤 8) 在下一个屏幕上,您将能够测试连接。
- 单击“测试查询”按钮,查看您是否能够从表中获取值
- 单击“完成”按钮以完成向导。
步骤 9) 现在在最后一个屏幕上,您可以单击“确定”按钮。这将把 TutorialID listbox 绑定到“demotb”表中的 TutorialID 字段名。
步骤 10) 现在是时候将 Tutorial Name listbox 绑定到 Tutorial Name 字段了。
- 首先,单击 Tutorial Name Listbox。
- 接下来,在 Listbox 旁边出现的对话框中,选择“数据源”。
步骤 11) 在下一个屏幕上选择数据源时,您将已经看到 DemoDataSource。
- 选择 DemoData Source
- 点击“确定”按钮。
如果以上所有步骤都按所示执行,您将获得以下输出。
输出:-
从输出中,您可以看到 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 中定义数据源来绑定。数据源用于从数据库中提取数据并将其填充到控件中。