MySQL服务器的Java ResultSet的C#等效项是什么?

问题描述 投票:0回答:2

我是学习C#的新手,java中的resultSet类非常易于使用(至少对我而言),以从selects中恢复表数据,我一直在寻找如何从C#中的select中读取数据,但我不知道如果它们是更方便的方法。

在C#中从MySQL获取表数据的最佳方法是什么?

c# mysql
2个回答
0
投票

您可以使用SqlDataAdapter填充C#中的DataTable或DataSet。


0
投票

我会尽量简短...我还没有完全使用过Java(只是基础知识),也不知道resultSet类,但是我可以告诉您如何在c#中从MySQL获取表数据...我会解释使用NHIBERNATE作为选择的框架。

在数据库和应用程序之间进行连接时,标准是使用合适的ORM(对象关系映射器)。其目的是将应用程序域类(实体)与数据库表连接。您可以通过以下表格获得表格:-

CREATE TABLE [dbo].[ShipmentRequest](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](max) NULL,
    [FirstName] [nvarchar](max) NULL,
    [LastName] [nvarchar](max) NULL,
)

此sql表将转换为以下类

public class ShipmentRequest
{
   public virtual int Id {get; set;}
   public virtual string Name {get; set;}
   public virtual string FirstName {get; set;}
   public virtual string LastName {get; set;}
}

现在我们对ORM有了一些基本了解,接下来您将要确定哪种ORM最好将c#连接到MySQL ... c#中最常见的两个ORM是Entity Framework和NHibernate ...这两个工作原理非常相似根据以上说明,您将使用适当的配置创建类,以允许生成数据库和表(如果数据库已经存在,则可以进行同步)。

话虽如此,我只是解释其中一个ORM,如前所述,它将是NHIBERNATE。

[开始,请打开Visual Studio(如果没有,请下载并安装)。创建一个简单项目或打开一个现有项目。单击程序集/项目,然后转到依赖项/框架。右键单击它并去管理nuget包。如果您必须知道,c#中的Nuget程序包管理器是第三方框架存储库,人们可以在其中构建可从Visual Studio下载的标准c#库,Nuget程序包管理器允许组织良好的第三方库放置以及易于集成到c#项目(最常见的是一键式)。您下载NHiberate(搜索它并单击安装)。

您将上面的类映射到所需的表,如下所示:-

公共类ShipmentRequestMap:ClassMap

{

   public ShipmentRequestMap()

   {

       Id(x => x.Id);

       Map(x => x.Name);

       Map(x => x.FirstName);

       Map(x => x.LastName);

       Table("ShipmentRequest");

   }

}

您的配置文件看起来像这样

using System.IO;
using System.Reflection;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Driver;
using NHibernate.Tool.hbm2ddl;

namespace YourApplication
{
    public class NHibernateConfig
    {
        private const string connStr = "Server=.;Port=4005;Database=yourdatabaseDB;Uid=yourusername;Pwd=yourpassword;";

        public static ISessionFactory CreateMySqlSessionFactory(){
           var config = new Configuration();

           config.DataBaseIntegration(x => {
               x.Driver<MySqlDataDriver>();
               x.ConnectionString = connStr;
               x.Dialect<MySQL5Dialect>();
           });
           var sessionFactory = Fluently.Configure(config)
                                        .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly())).ExposeConfiguration(cfg => new SchemaExport(cfg)

            .Create(false, false)).BuildSessionFactory();

           return sessionFactory;

        }                      
    }   
}

数据库现在已连接到应用程序。剩下的就是编写您的IRepository,BaseRepository和其他服务...

您的存储库将是这样的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;

namespace IRepository.Data {
    public interface IRepository<T> {
        void Create(T entity);
        void Update(T entity);
        void Delete(T entity);
        void Copy(T source, T target);
        void Flush();

        T Get(int id);
        T Get(Expression<Func<T, bool>> predicate);

        IQueryable<T> Table { get; }

        int Count(Expression<Func<T, bool>> predicate);
        IEnumerable<T> Fetch(Expression<Func<T, bool>> predicate);
        IEnumerable<T> Fetch(Expression<Func<T, bool>> predicate, Action<Orderable<T>> order);
        IEnumerable<T> Fetch(Expression<Func<T, bool>> predicate, Action<Orderable<T>> order, int skip, int count);
    }
}

因此,这就是完成c#中与应用程序的数据库连接的方式,如果愿意,您也可以考虑使用实体框架。编码愉快!

© www.soinside.com 2019 - 2024. All rights reserved.