我是学习C#的新手,java中的resultSet类非常易于使用(至少对我而言),以从selects中恢复表数据,我一直在寻找如何从C#中的select中读取数据,但我不知道如果它们是更方便的方法。
在C#中从MySQL获取表数据的最佳方法是什么?
您可以使用SqlDataAdapter填充C#中的DataTable或DataSet。
我会尽量简短...我还没有完全使用过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#中与应用程序的数据库连接的方式,如果愿意,您也可以考虑使用实体框架。编码愉快!