使用 MySQL 数据库的 ASP.NET 应用程序






4.66/5 (27投票s)
如何从 ASP.NET 应用程序使用 MySQL 4.1 数据库以及一些 ODBC 基础知识。
摘要
.NET 是微软开发的新的分布式计算平台,而 ASP.NET 是其用于 Web 开发的编程模型。我正在使用 C# 创建一个带有 DataGrid
的 Web 窗体,用于数据录入。如何使 DataGrid
单元格显示一个文本框,以显示所有行中的产品列表。此解决方案将教您如何将 MySQL 数据库与 ASP.NET 一起使用。我使用 ASP.NET 1.1 和 C# 作为代码隐藏以及 MySQL 4.1 开发了这个示例。我认为这对于学习 .NET 的初学者来说会是一篇更有用的文章。在这个示例中,我使用了 DataGrid
控件进行演示。本文解释了 DataGrid
的所有基本操作。
解决方案概述
MySQL
MySQL Server 4.0 为 MySQL 4.1 中实现的新功能奠定了基础,例如子查询和 Unicode 支持,这些是许多客户所期望的。该服务器作为单独的程序提供,用于在客户端/服务器网络环境中。它也可以作为库提供,可以嵌入(链接)到独立的应用程序中。此类应用程序可以在隔离的环境或没有网络的环境中使用。客户端可以使用 TCP/IP 套接字在任何平台上连接到 MySQL 服务器。在属于 NT 系列(NT、2000、XP 或 2003)的 Windows 系统上,客户端可以使用命名管道进行连接。在 UNIX 系统上,客户端可以使用 UNIX 域套接字文件进行连接。
在 MySQL 4.1 中,我们不能编写存储过程、函数或视图。以下是 MySQL 中 SELECT
, UPDATE
和 DELETE
查询的示例。
SELECT column_names from table_name [WHERE ...conditions];
UPDATE table_name SET column_names = ‘’ WHERE ...conditions;
DELETE FROM table_name WHERE ...conditions;
ODBC
Microsoft 开放数据库连接 (ODBC) 接口是一个 C 编程语言接口,它使应用程序可以从各种数据库管理系统中访问数据。ODBC 接口允许最大的互操作性——应用程序可以通过单个接口访问不同 DBMS 中的数据。此外,该应用程序将独立于它从中访问数据的任何 DBMS。应用程序的用户可以添加名为驱动程序的软件组件,这些组件在应用程序和特定的 DBMS 之间进行接口。使用 ODBC 的应用程序负责任何跨数据库功能。例如,ODBC 不是异构连接引擎,也不是分布式事务处理器。但是,由于它是独立于 DBMS 的,因此可以用于构建此类跨数据库工具。
以下将向您解释 ODBC 的架构
用于 ODBC 的命名空间
using System.Data.Odbc;
System.Data.Odbc
命名空间是 .NET Framework 中用于 ODBC 的数据提供程序。
用于 ODBC 的 .NET Framework 数据提供程序描述了一组用于在托管空间中访问 ODBC 数据源的类。使用 OdbcDataAdapter
类,您可以填充一个内存驻留的 DataSet
,您可以使用它来查询和更新数据源。
带有代码的解决方案
首先,让我们看看如何将 ASP.NET 与 MySQL 数据库连接起来。以下代码将解释如何与 MySQL 4.1 数据库连接
// Connection String
private const string ConnStr =
"Driver={MySQL ODBC 3.51 Driver};Server=localhost;" +
"Database=test;uid=root;pwd=;option=3";
// DataBinding
private void BindDataGrid()
{
using(OdbcConnection con = new OdbcConnection(ConnStr))
using(OdbcCommand cmd =
new OdbcCommand("SELECT * FROM Sample", con))
{
con.Open();
DataGrid1.DataSource = cmd.ExecuteReader(
CommandBehavior.CloseConnection |
CommandBehavior.SingleResult);
DataGrid1.DataBind();
}
}
此代码片段显示了将数据从 MySQL 数据库绑定到 DataGrid
控件的代码。每一个基本操作都被写成一个单独的函数。以下是 DataGrid
中要执行的基本操作的函数
// Insert Operation
private void InsertInfo()
{
if(CheckIsAddNameValid())
{
HtmlTable2.Visible = false;
using(OdbcConnection con = new OdbcConnection(ConnStr))
using(OdbcCommand cmd = new OdbcCommand("INSERT INTO sample" +
"(name, address) VALUES (?,?)", con))
{
cmd.Parameters.Add("@name", OdbcType.VarChar,
255).Value = TextBox3.Text.Trim();
cmd. Parameters.Add("@address", OdbcType.VarChar,
255).Value = TextBox4.Text.Trim();
con.Open();
cmd.ExecuteNonQuery();
BindDataGrid();
}
}
}
// Update Operation
private void UpdateInfo(int id, string name, string address)
{
using(OdbcConnection con = new OdbcConnection(ConnStr))
using(OdbcCommand cmd = new OdbcCommand("UPDATE sample " +
"SET name = ?, address = ? WHERE ID = ?", con))
{
cmd.Parameters.Add("@name", OdbcType.VarChar, 255).Value = name;
cmd.Parameters.Add("@address",
OdbcType.VarChar, 255).Value = address;
cmd.Parameters.Add("@ID", OdbcType.Int).Value = id;
con.Open();
cmd.ExecuteNonQuery();
}
}
// Update Operation
private void DeleteInfo(int id)
{
using(OdbcConnection con = new OdbcConnection(ConnStr))
using(OdbcCommand cmd = new OdbcCommand("DELETE " +
"FROM sample WHERE ID = ?", con))
{
cmd.Parameters.Add("@ID", OdbcType.Int).Value = id;
con.Open();
cmd.ExecuteNonQuery();
}
}
此示例的表设计
CREATE TABLE sample (
id int AUTO_INCREMENT NOT NULL,
name varchar(45) NOT NULL,
address varchar(45) NOT NULL,
PRIMARY KEY(id)
)
GO
有关 DataGrid 的详细信息
DataGrid
控件显示表格数据,并可选地支持数据的选择、排序、分页和编辑。默认情况下,DataGrid
为数据源中的每个字段生成一个 BoundColumn
(AutoGenerateColumns=true
)。数据中的每个字段都呈现在一个单独的列中,按其在数据中出现的顺序排列。字段名称显示在网格的列标题中,值在文本标签中呈现。默认格式应用于非字符串值。
// Update Event
private void DataGrid1_UpdateCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
try
{
int cUsrID ;
string strName;
string strAddress;
Literal ltID;
TextBox txtTempName;
TextBox txtTempAddress;
ltID = (System.Web.UI.WebControls.Literal )
e.Item.Cells[0].FindControl("Label");
cUsrID = Convert.ToInt32 (ltID.Text);
txtTempName = (System.Web.UI.WebControls.TextBox)
e.Item.Cells[1].FindControl("TextBox1");
strName = txtTempName.Text;
txtTempAddress = (System.Web.UI.WebControls.TextBox)
e.Item.Cells[2].FindControl("Textbox2");
strAddress = txtTempAddress.Text;
UpdateInfo(cUsrID, strName, strAddress);
DataGrid1.EditItemIndex = -1;
BindDataGrid();
}
catch(Exception ex)
{
}
}
结论
阅读本文后,您将对 ODBC 连接、DataGrid
和最重要的 MySQL 有一个基本的了解。希望这篇文章对正在成长中的程序员更有用。
参考
- 在线 MSDN 库。