2011-09-23 45 views
1

查看此代碼:如何在C#中複製數據庫表?

switch(someString) 
{ 
case "11": 
    Con1_1.ConnectionString = conStr; 
    Con1_1.Open(); 
    Dapt1_1 = new SqlDataAdapter("SELECT * From StdList", Con1_1); 
    Dapt1_1.Fill(Dset1_1, "StdList"); 
    count = Dset1_1.Tables["StdList"].Rows.Count - 1; 
    break; 
case "12": 
    Con1_2.ConnectionString = conStr; 
    Con1_2.Open(); 
    Dapt1_2 = new SqlDataAdapter("SELECT * From StdList", Con1_2); 
    Dapt1_2.Fill(Dset1_2, "StdList"); 
    count = Dset1_2.Tables["StdList"].Rows.Count - 1; 
    break; 
} 

我想使用一個數據庫表,可重複2例。請幫助我做到這一點。 我可以只使用一個表在數據庫中2例或以上?或者我必須定義多少表,我需要?

+1

這兩個箱體如何不同?我沒有看到任何。只需將連接字符串(如果您使用2個不同的目錄)傳遞給具有公共主體代碼的方法。 – Zenwalker

+0

根本不清楚。數據庫中有多少個表?數據集是數據表的集合,因此您可以在同一數據集中添加和填充許多表。更好地描述數據庫中您的數據需求和形狀。 –

+0

試圖解釋(文字,不只是代碼)你想達到的目標。你通常會以這種方式得到更好的答案。 –

回答

0

如果我理解正確你想從表中得到一組記錄,如果你的someString是「11」,並從不同的表一組不同的記錄,如果someString的值是「12」?

如果兩個表中的記錄結構相同,則可以簡單地向第一個表結構中添加一個字段(例如'SchoolClass')以區分記錄,將someString的適當值存儲在每個記錄的列中。然後,你只需要一個表 - 把所有的記錄在該表訪問它做到以下幾點:

Con1_1.ConnectionString = conStr; 
Con1_1.Open(); 
Dapt1_1 = new SqlDataAdapter("SELECT * From StdList WHERE SchoolClass = '" + someString + "'", Con1_1); 
Dapt1_1.Fill(Dset1_1, "StdList"); 
count = Dset1_1.Tables["StdList"].Rows.Count - 1; 
+0

沒有沒有沒有人......我只需要我的表的副本另一所學校類 – Erfan

+0

所以你說你有一個學生信息的表,你有類信息的另一個表?我不確定你想要達到什麼目的?你能再描述一下情況嗎? – Actel

0

好吧,我給你

在一個表中添加兩個列,那些。班級和學校。然後 您可以通過班級和學校進行篩選。但是,所有的細節都會被保存在一個表

Con1_1.ConnectionString = conStr; 
Con1_1.Open(); 
Dapt1_1 = new SqlDataAdapter("SELECT * From StdList WHERE class= '" + m_class+ "' AND school='"+m_school+"'", Con1_1); 

Dapt1_1.Fill(Dset1_1, "StdList"); 
count = Dset1_1.Tables["StdList"].Rows.Count - 1; 
0

您的模式提案和代碼沒什麼意義。

我會建議你使用的模式是這樣的:

#Students 
. Id 
. ClassId 
. Name 
. Family 
. Phone 
. Etc... 

#Classes 
. Id 
. ClassName 
. More info you might want about a class... 

然後你的風格打造法:

public DataTable GetStudentsByClass(int classId) 
{ 
    //Set the connection string to the database and open the connection 
    Con1_1.ConnectionString = conStr; 
    Con1_1.Open(); 

    //Execute the SQL query 
    databaseAdapter = new SqlDataAdapter("SELECT * From Students WHERE ClassId = " + classId, Con1_1); 

    //Declare a datatable to fill 
    DataTable students; 

    //Fill the datatable with the results 
    databaseAdapter.Fill(students, "Students"); 

    //Return the filled datatable 
    return students; 
} 

public int GetStudentsInClassCount(int classId) 
{ 
    //Here you can reuse the previous method to get the count, a more optimal way would be to use the SQL count though. 
    return GetStudentsByClass(classId).Rows.Count; 
} 

要使用它,你就去做這樣的:

DataTable students = GetStudentsByClass(1);