Goran Bibic Ответов: 2

Показать данные из разных баз данных в одном приложении C#


Мне нужна некоторая помощь, у меня есть мое приложение MKS, созданное базой данных MKS_2017 и использующее ее. Это прекрасно работает. Теперь я создал MKS_2018 и с его помощью он также работает нормально.

Мне нужно реализовать при входе в мое приложение MKS using (имя пользователя,пароль) и в combox выбрать базу данных для отображения данных в моем приложении (MKS_2017 или MKS_2018)

Что я уже пробовал:

Я читаю базу данных с сервера таким образом

public List<string> GetDatabaseList()
{
   List<string> list = new List<string>();

   using (SqlConnection con = new SqlConnection(cs))
   {
       con.Open();
       // Set up a command with the given query and associate
       // this with the current connection.
       using (SqlCommand cmd = new SqlCommand("SELECT name from sys.databases where name like 'MKS%'", con))
       {
             using (IDataReader dr = cmd.ExecuteReader())
             {
                        while (dr.Read())
                        {
                            list.Add(dr[0].ToString());
                        }
                    }
              }
            }
            return list;

        }

Manish K. Agarwal

Не в состоянии действительно понять, в чем проблема в данном случае. Он должен быть прямым, просто на основе выбора из выпадающего списка измените параметр подключения.

Goran Bibic

Рекомендация? Какая-то помощь?

Goran Bibic

У меня есть приложение, нужно использовать данные из datababe mks_2017 (для 2017 года. год) и из базы данных mks_2018 (данные с 2018 года. год). При входе в систему выберите из базы данных combobox, которую я хочу использовать

Manish K. Agarwal

Во - первых, нет необходимости управлять 2 DBs в зависимости от года. В любом случае, даже если вы это сделали, способ создания SqlConnection(cs) должен указывать MKS_2017 или MKS_2018, теперь на основе выбора пользователя в выпадающем списке вы должны указать его в "cs"

2 Ответов

Рейтинг:
2

OriginalGriff

У вас есть список баз данных, все, что вам нужно сделать, это использовать выбранное имя в качестве части строки подключения.

Поэтому установите статическую строку подключения в своем приложении:

public static strConnect = "";
и вы можете получить к нему доступ, когда вам это нужно:
using (SqlConnection con = new SqlConnection(MyClassWhereIPutIt.strConnect))
   {
   ...
   }
Тогда все, что вам нужно сделать, это построить строку подключения. Есть два способа сделать это:
1) Если все базы данных используют одни и те же данные пользователя и пароля, все просто: создайте "базовую" строку подключения с заполнителем для имени БД:
const string basic = @"Server=[server_name]; Database={0}; password=[password]; user = [user_name]";
И используйте Replace для установки имени:
strConnect = basic.Replace("{0}, nameOfTable);

2) если они этого не делают, то вам нужно будет где-то поддерживать допустимый список строк соединений (я бы предложил в таблице в "главной" БД в SQL, которая позволяет вам извлекать рабочую строку соединения из SQL, используя требуемое имя БД в предложении WHERE.)


Рейтинг:
1

velmahesh

Ниже код будет поддерживать две базы данных, через которые мы будем извлекать записи.

select top 5* from QA.dbo.user_userdetail as I1 inner join [MOCRollOver2].dbo.user_userdetail I2 on I1.User_ID=I2.User_ID

Выборка записей отображается ниже.
User_ID	UserName	Password
1  	Superdev  1000:F0
2	Admin	  1000:wLVgI5
3	Import    1000:w5