Как дублировать таблицу базы данных в C #? - PullRequest
1 голос
/ 23 сентября 2011

См. Этот код:

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 или более случаев?или мне нужно определить столько таблиц, сколько мне нужно?

Ответы [ 3 ]

0 голосов
/ 23 сентября 2011

Хорошо, я вас понял.

добавьте еще две колонки в таблицу - для класса и школы затем Вы можете фильтровать по классу и школе. Но все детали будут храниться на одной таблице

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 голосов
/ 23 сентября 2011

Ваше предложение и код схемы имеют очень мало смысла.

Я бы порекомендовал вам использовать схему, которая выглядит примерно так:

#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);
0 голосов
/ 23 сентября 2011

Если я вас правильно понимаю, вы хотите получить один набор записей из таблицы, если ваш 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...