65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.66/5 (27投票s)

2005年11月28日

CPOL

3分钟阅读

viewsIcon

266647

downloadIcon

7675

如何从 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, UPDATEDELETE 查询的示例。

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 库。
© . All rights reserved.