【问题标题】:Read\Write\Change MySql Table from asp.net list view从 asp.net 列表视图中读取\写入\更改 MySql 表
【发布时间】:2012-01-01 12:46:03
【问题描述】:

所以,我正在为我的兄弟建立一个新网站,看来我需要为他使用 MySql。

在 ASP.NET 中有一个列表视图项,您可以选择从哪个数据库中获取信息,您可以通过单击 @Read \ Write \ Change \ Delete 987654325@。

这里的任何人都知道我如何使用MySql 做到这一点?而不是 mssql .. 我知道如何使用 DataBases,我只是没有使用过 MySql,我会感谢任何能帮助我的人。

再次感谢!和... :)

【问题讨论】:

  • 可能还想添加一个 mysql 标签。
  • 您希望我们帮助您了解如何在 asp.net 中使用 mysql 数据库吗?

标签: c# asp.net mysql webforms


【解决方案1】:

您首先需要一个可以找到here的连接器

然后,不要使用System.Data 类,而是使用您刚刚下载的类。它们是相同的类,但唯一的区别是它们用于 MySQL。

此外,如果您想编写 MySQL 查询,那么它们与 MSSQL 中的几乎相同。以下是一些示例:

阅读:

SELECT id, value FROM table
WHERE id = 16;

写:

INSERT INTO table(id, value)
VALUES (1,'Bob'),(2,'Betty');

更改:

UPDATE table
SET id = 7
WHERE id = 16;

删除:

DELETE FROM table
WHERE id = 7;

在您的 C# 代码中,您只需要使用 3-4 个类来处理数据库。因为我不想把它变成文字墙,你可以阅读更多关于这些课程的信息here,除非你对这些足够熟悉。

【讨论】:

    【解决方案2】:

    这里是使用 mysql 数据库进行基本操作的一般方法。我假设你知道如何设置你的 mysql 数据库。如果没有,你可以在谷歌上找到很多关于它的信息。我还假设您的 mysql 数据库中有一个名为“table”的表,其中包含以下列:id、name、address。

         // 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();
             }
         }
    
    
         // 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
    

    BindDataGrid 函数在数据网格中显示查询结果。一般来说,您可以将任何查询的结果放到一个列表中,然后使用以下代码将其绑定到数据网格:

    List<string> AllStudents = getAllStudents();
    dataGrid1.datasource = AllStudents;
    dataGrid1.databind();
    

    【讨论】:

      【解决方案3】:

      ASP.Net 通过Provider Model 与数据库一起工作。您已经下载了 MySql 的 ADOconnector,它的工作方式应该与 MS SQL 相同,只是您必须使用特定于 MySql 的不同查询集。

      【讨论】:

        【解决方案4】:

        您也可以尝试查看Entity Framework。它是一个对象关系映射器 (ORM),它将数据库的表抽象为您可以在代码中轻松使用的对象。它使代码比硬编码 SQL 字符串更具可读性和可维护性(正如其他一些答案所暗示的那样)。

        Entity Framework 是 Microsoft 推荐的解决方案。您可以将它与 Bosak 指出的 MySQL 连接器一起使用。

        NHibernate 是您可能想要研究的另一种流行的 ORM。

        【讨论】:

          猜你喜欢
          • 2012-01-29
          • 2013-06-17
          • 1970-01-01
          • 2019-01-18
          • 1970-01-01
          • 2013-12-16
          • 1970-01-01
          • 2020-10-06
          相关资源
          最近更新 更多