2013-02-18 132 views
0

我有下表。我跑这个查询90获得学生与成绩:将部分数据从一个表复制到另一个C#

Select Name, Class, Score from Student where Score > 90 
Student 
Name Class Rank Score 
A 1 20 100 
B 1 12 95 
C 2 11 89 
D 1 14 60 
... 

现在我想将收集到名为ExcellentStudent另一个表中的数据,这样的:

ExcellentStudent 
Name Class Score 
A 1 100 
B 1 95 

有一个简单的方法来做到这在C#中?

+0

你说的是查询返回的第一个数据集插入查询,但它包含了'Score's其中小于90 – 2013-02-18 16:34:54

回答

0

C#代码运行对DB

using System.Data.SqlClient; 

namespace ConsoleApplication 
{ 
    internal class Program 
    { 
     private static void Main(string[] args) 
     { 
      using (var objConnection = new SqlConnection("Your Conneciton String")) 
      { 
       objConnection.Open(); 
       using (var objCommand = new SqlCommand("INSERT INTO ExcellentStudent (Name, Class, Score) SELECT Name, Class, Score FROM Student WHERE Score > 90", objConnection)) 
       { 
        objCommand.ExecuteNonQuery(); 
       } 
       objConnection.Close(); 
      } 
     } 
    } 
} 
0

由于您可以运行SQL语句来获取分数,为什么现在调用C#代码中的另一个SQL来将数据填充到ExcellentStudent表?

INSERT INTO ExcellentStudent(Name, Class, Score) 
Select Name, Class, Score from Student where Score > 90 
+0

你认为这是超过3000行记录最有效的方法吗? – NoviceMe 2013-02-18 16:47:03

+0

@NoviceMe现在你正在谈论性能。与实施C#逻辑相比,SQL查询减少了应用程序和SQL服务器之间的往返次数。所以它更有效率。您也可以尝试[合并](http://technet.microsoft.com/en-us/library/bb510625.aspx)命令,它预计会快一点。我是一个ORM人,但如果你想提高你的应用程序的性能,你应该坚持使用SQL。 – zsong 2013-02-18 16:52:02

+0

是@sza是正确的,以保持最快的速度始终使用直接的SQL查询。当然这并不总是可能的,但在这种情况下是这样。 – Dreamwalker 2013-02-19 07:38:38

相关问题