Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL查询+;数据表+;网格视图_C#_Sql_Gridview_Datatable - Fatal编程技术网

C# SQL查询+;数据表+;网格视图

C# SQL查询+;数据表+;网格视图,c#,sql,gridview,datatable,C#,Sql,Gridview,Datatable,我需要从SQL数据库读取数据,并在表中创建以下结果: DATABASE ========= Server, Site Name, Status 001, Site 1, Down 002, Site 1, Up 003, Site 2, Up 004, Site 2, Down 001, Site 3, Up 005, Site 4, Down 站点1:它存在于2台服务器中(001002) 站点2:它存在于2台服务器(003、004)中 站点3:它仅存在于1台服务器(001)中 站点4:它仅

我需要从SQL数据库读取数据,并在表中创建以下结果:

DATABASE
=========
Server, Site Name, Status
001, Site 1, Down
002, Site 1, Up
003, Site 2, Up
004, Site 2, Down
001, Site 3, Up
005, Site 4, Down
  • 站点1:它存在于2台服务器中(001002)
  • 站点2:它存在于2台服务器(003、004)中
  • 站点3:它仅存在于1台服务器(001)中
  • 站点4:它仅存在于1台服务器中(005)
结果:

@@@@@@@@@@@@@@@@@@@@@@

站点名称1=1长列

@@@@@@@@@@@@@@@@@@@@@@

服务器1=第1列| |服务器2=第2列

@@@@@@@@@@@@@@@@@@@@@@

站点名称2=1长列

@@@@@@@@@@@@@@@@@@@@@@

服务器1=第1列| |服务器2=第2列

@@@@@@@@@@@@@@@@@@@@@@

这是我的C代码

第一个SQL查询是只选择不同的站点

然后利用这些信息,我执行另一个SQL查询来选择所有信息并相应地填充表


我该怎么做?

您是否考虑过使用
DataContext
DbContext
。基本上将数据库映射到代码。然后可以利用LINQ

例如,如果有一个Students表和StudentInfo表,则可以执行以下操作:

public class MyContext : DataContext
{
    public Table<Student> Students { get { return GetTable<Student>(); } }
    public Table<StudentInfo> StudentInfo { get { return GetTable<StudentInfo>(); } }
    public MyContext(string ConnString) : base(ConnString) {}
}

[Table(Name = "dbo.Students")]
public class Student
{
    [Column(IsPrimary = true, Name = "StudentId", IsDbGenerated = true, DbType = "int Not Null IDENTITY")]
    public int StudentId { get; set; }
    [Column(Name = "Name")]
    public string Name { get; set; }
}

[Table(Name = "dbo.StudentInfo")]
public class StudentInfo
{
    [Column(IsPrimary = true, Name = "StudentInfoId", IsDbGenerated = true, DbType = "int Not Null IDENTITY")]
    public int StudentInfoId { get; set; }
    [Column(Name = "StudentId")]
    public int StudentId { get; set; }  // FK
    [Column(Name = "Address")]
    public string Address{ get; set; }
}

// a method somewhere
public void StudentLookup(string name)
{
    var MyContext context = new MyContext(connString);
    var student = context.Students.Single(x => x.Name == name)
    var StudentInfo = context.StudentInfo.Where(x => x.StudentId == student.StudentId);
}
公共类MyContext:DataContext { 公共表学生{get{return GetTable();}} 公共表StudentInfo{get{return GetTable();}} 公共MyContext(字符串ConnString):基(ConnString){} } [表(Name=“dbo.Students”)] 公立班学生 { [列(IsPrimary=true,Name=“StudentId”,IsDbGenerated=true,DbType=“int Not Null IDENTITY”)] 公共int StudentId{get;set;} [列(Name=“Name”)] 公共字符串名称{get;set;} } [表(Name=“dbo.StudentInfo”)] 公共班级学生信息 { [列(IsPrimary=true,Name=“studentinfo”,IsDbGenerated=true,DbType=“int Not Null IDENTITY”)] public int studentInfo{get;set;} [列(Name=“StudentId”)] public int StudentId{get;set;}//FK [列(Name=“Address”)] 公共字符串地址{get;set;} } //某处的方法 public void StudentLookup(字符串名称) { var MyContext context=新的MyContext(connString); var student=context.Students.Single(x=>x.Name==Name) var StudentInfo=context.StudentInfo.Where(x=>x.StudentId==student.StudentId); }
这是一种选择,但我建议使用实体框架和代码优先迁移

也许LINQ更适合实现我需要的功能?如果是,怎么做?
public class MyContext : DataContext
{
    public Table<Student> Students { get { return GetTable<Student>(); } }
    public Table<StudentInfo> StudentInfo { get { return GetTable<StudentInfo>(); } }
    public MyContext(string ConnString) : base(ConnString) {}
}

[Table(Name = "dbo.Students")]
public class Student
{
    [Column(IsPrimary = true, Name = "StudentId", IsDbGenerated = true, DbType = "int Not Null IDENTITY")]
    public int StudentId { get; set; }
    [Column(Name = "Name")]
    public string Name { get; set; }
}

[Table(Name = "dbo.StudentInfo")]
public class StudentInfo
{
    [Column(IsPrimary = true, Name = "StudentInfoId", IsDbGenerated = true, DbType = "int Not Null IDENTITY")]
    public int StudentInfoId { get; set; }
    [Column(Name = "StudentId")]
    public int StudentId { get; set; }  // FK
    [Column(Name = "Address")]
    public string Address{ get; set; }
}

// a method somewhere
public void StudentLookup(string name)
{
    var MyContext context = new MyContext(connString);
    var student = context.Students.Single(x => x.Name == name)
    var StudentInfo = context.StudentInfo.Where(x => x.StudentId == student.StudentId);
}