插入、更新、删除:ASP.NET 数据库连接教程
从数据库访问数据是任何编程语言的一个重要方面。任何编程语言都必须具备处理数据库的能力。
ASP.Net 能够处理不同类型的数据库。它可以处理最常见的数据库,例如 Oracle 和 Microsoft SQL 服务器。
它还能够与新形式的数据库配合使用,例如 MongoDB 和 MySQL.
数据库连接基础知识
ASP.Net 能够与大多数数据库配合使用。最常见的是 Oracle 和 Microsoft SQL Server。但对于每个数据库来说,其背后的操作逻辑大致相同。
在我们的示例中,我们将研究如何使用 Microsoft SQL Server 作为我们的数据库。出于学习目的,您可以下载并使用 Microsoft SQL Server Express 版本。这是由以下机构提供的免费数据库软件 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) 首先确保您已在 Visual Studio 中打开了 Web 应用程序 (DemoApplication)。 Double 单击“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 的机器上。
- 初始目录用于指定数据库的名称
- 用户 ID 和密码是连接数据库所需的凭证。
- 接下来,我们将连接字符串分配给变量“cnn”。
- 变量 cnn 是 SqlConnection 类型。这用于建立与数据库的连接。
- SqlConnection 是 ASP.Net 中的一个类,用于创建与数据库的连接。
- 要使用此类,您必须首先创建此类的对象。因此,我们在这里创建一个名为“cnn”的变量,其类型为 SqlConnection。
- 接下来,我们使用 cnn 变量的 open 方法打开与数据库的连接。我们向用户显示一条消息,告知连接已建立。这是通过“response.write”方法完成的。然后我们关闭与数据库的连接。
当设置了上述代码,并使用以下方式执行项目 Visual Studio中。您将获得以下输出。显示表单后,单击“连接”按钮。
输出:-
浏览器中显示的输出消息将显示与数据库的连接已建立。
ASP.NET 使用 SqlDataReader 读取数据库
为了显示使用 Asp.Net 访问的数据,我们假设数据库中存在以下工件。
- 一个名为 demotb 的表。此表将用于存储各种教程的 ID 和名称。
- 该表将有两列,一列称为“TutorialID”,另一列称为“TutorialName”。
- 目前,表格将有两行,如下所示。
教程编号 | 教程名称 |
---|---|
1 | C# |
2 | 网络 |
让我们修改代码,以便我们可以查询这些数据并在网页本身上显示信息。请注意,输入的代码是数据连接模块代码的延续。
步骤1) 我们将代码分成两部分,
- 第一部分是构建我们的“select”语句。它将用于从数据库中读取数据。
- 然后我们将针对数据库执行“select”语句。这将相应地获取所有表行。
代码说明:-
- 第一步是创建以下变量
- SQLCommand – “SQLCommand” 是 C# 中定义的一个类。该类用于执行读取和写入数据库的操作。因此,第一步是确保我们创建该类的变量类型。然后,该变量将在从数据库读取数据的后续步骤中使用。
- DataReader 对象用于获取 SQL 查询指定的所有数据。然后我们可以使用数据读取器逐一读取所有表行。
- 然后我们定义两个字符串变量。一个是“SQL”,用于保存我们的 SQL 命令字符串。下一个是“Output”,它将包含所有表值。
- 下一步是实际定义 SQL 语句。这将用于我们的数据库。在我们的例子中,它是“从 demotb 中选择 TutorialID、TutorialName”。这将从表 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(); } } }
代码说明:-
- 我们将继续执行代码,显示 Output 变量的值。这是使用 Response.Write 方法完成的。
- 最后,我们关闭与数据库操作相关的所有对象。请记住,这始终是一个好习惯。
当设置了上述代码并使用 Visual Studio 运行项目时,您将获得以下输出。
输出:-
从输出中,您可以清楚地看到程序能够从数据库中获取值。然后,数据会在浏览器中显示给用户。
使用 InsertCommand 插入数据库记录
就像访问数据一样,ASP.Net 也能够将记录插入数据库。让我们采用用于插入记录的相同表结构。
教程编号 | 教程名称 |
---|---|
1 | C# |
2 | 网络 |
让我们更改表单中的代码,以便我们可以在表中插入以下行
教程编号 | 教程名称 |
---|---|
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 能够从数据库中更新现有记录。让我们采用上面用于插入记录的示例的相同表结构。
教程编号 | 教程名称 |
---|---|
1 | C# |
2 | 网络 |
3 | VB.Net |
让我们更改表单中的代码,以便我们可以更新以下行。旧行值为 TutorialID 为“3”,Tutorial Name 为“VB.Net”。我们将其更新为“VB.Net complete”,而 Tutorial ID 的行值将保持不变。
老排
教程编号 | 教程名称 |
---|---|
3 | VB.Net |
新行
教程编号 | 教程名称 |
---|---|
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 = "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 语句。在我们的例子中,我们发出“更新”语句。这会将教程名称更新为“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 可以从数据库中删除现有记录。让我们采用上面用于删除记录的示例的相同表结构。
教程编号 | 教程名称 |
---|---|
1 | C# |
2 | 网络 |
3 | VB.Net 完整版 |
让我们更改表单中的代码,以便可以删除以下行
教程编号 | 教程名称 |
---|---|
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 = "Delete demotb where TutorialID=3"; command = new SqlCommand(sql,cnn); adapter.DeleteCommand = new SqlCommand(sql,cnn); adapter.DeleteCommand.ExecuteNonQuery; command.Dispose(): cnn.Close(); } } }
代码说明:-
- 此代码中的关键区别在于我们现在发出删除 SQL 语句。删除语句用于删除 demotb 表中 TutorialID 值为 3 的行。
- 在我们的数据适配器命令中,我们现在将插入 SQL 命令关联到我们的适配器。我们还发出“ExecuteNonQuery”方法,该方法用于针对我们的数据库执行删除语句。
步骤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 应用程序
- 复选框列表
- 单选按钮列表
- 下拉列表
- 列表框
让我们看一个如何在 ASP.Net 中使用控件绑定的示例。这里我们将以列表框为例。假设我们的数据库中有以下数据。
教程编号 | 教程名称 |
---|---|
1 | C# |
2 | 网络 |
3 | VB.Net 完整版 |
让我们使用 Listbox 控件,看看它如何自动从我们的 Demotb 表中获取数据。
让我们按照以下步骤实现这一点。
步骤1) 构建基本 Web 表单。从 Visual Studio 的工具箱中,拖放 2 个组件 - 标签和列表框。然后执行以下子步骤;
- 将第一个标签的文本值作为 TutorialID
- 将第二个标签的文本值设置为TutorialName
执行上述步骤后,表单的外观如下。
步骤2) 下一步是开始将每个列表框连接到数据库表。
- 首先,单击教程 ID 的列表框。这将在控件的一侧弹出另一个对话框。
- 在对话框中,我们需要单击“选择数据源”选项。
步骤3) 然后您将看到一个对话框。这可用于创建新的数据源。数据源将代表与数据库的连接。选择“新数据源”选项。
步骤4) 在最后一步选择新的数据源后,将出现以下屏幕。这里我们需要提到我们想要创建的数据源类型。
- 选择数据库选项以使用 SQL Server 数据库。
- 现在我们需要为数据源命名。这里我们将其命名为 DemoDataSource。
- 最后,我们点击“确定”按钮进入下一个屏幕。
步骤5) 现在我们需要创建与数据库的连接。在下一个屏幕中,单击“新建连接”按钮
步骤6) 接下来您需要添加凭据以连接到数据库。
- 选择 SQL Server 所在的服务器名称
- 输入用户id和密码连接数据库
- 选择数据库为“demotb”
- 单击“确定”按钮。
步骤7) 在下一个屏幕上,您将能够看到 Demotb 表。只需单击下一步按钮即可接受默认设置。
步骤8) 您现在可以在下一个屏幕上测试连接。
- 单击“测试查询”按钮,看看是否能够从表中获取值
- 单击“完成”按钮以完成向导。
步骤9) 现在在最后一个屏幕上,您可以单击“OK”按钮。这会将 TutorialID 列表框绑定到“demotb”表中的 TutorialID 字段名称。
步骤10) 现在是时候将教程名称列表框绑定到教程名称字段了。
- 首先,单击教程名称列表框。
- 接下来,在列表框侧面出现的对话框中从数据源中进行选择。
步骤11) 在下一个屏幕中选择数据源时,您将看到 DemoDataSource。
- 选择演示数据源
- 点击确定按钮。
如果按照上述所有步骤执行,您将获得下面提到的输出。
输出:-
从输出中,你可以看到列表框分别显示教程 ID 和教程名称
结语
- ASP.Net 可以与以下数据库配合使用 Oracle 和 Microsoft SQL Server.
- ASP.Net 具有使用数据库所需的所有命令。这涉及建立与数据库的连接。您可以执行选择、更新、插入和删除等操作。
- ASP.Net 中的 datareader 对象用于保存数据库返回的所有数据。ASP.net 中的 While 循环可用于一次读取一行数据。
- 数据适配器对象用于执行插入、删除和更新等 SQL 操作。
- ASP.Net 可以将控件绑定到表中的各个字段。通过在 ASP.Net 中定义数据源来绑定它们。数据源用于从数据库中提取数据并将其填充到控件中。