Оператор внутреннего соединения SQL в C#C#

Место общения программистов C#
Ответить
Anonymous
 Оператор внутреннего соединения SQL в C#

Сообщение Anonymous »

Я работаю над школьным проектом

Я хочу получить всю информацию о группах, и это прекрасно работает. Пока я не доберусь до жанров.
Жанр немного особенный, потому что группа может иметь несколько жанров, и наоборот.

Итак, в SQL у меня есть таблица Bands, таблица Genre и таблица Band_Genre
Если я выполню внутреннее соединение

SELECT *
FROM Band
INNER JOIN Band_Genre
ON Band.ID = Band_Genre.BandID


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

Но сейчас я хочу заполнить сетку данных самими жанрами, а не идентификаторами.
Поэтому я думаю, что мне нужно получить идентификатор из внутреннего соединения и связать его с Genre.Name

Может быть, это немного пойдет далеко, но
Я был бы рад, если бы кто-нибудь уже смог получить идентификаторы в ObservableCollection.
Чтобы Datagrid отображал Жанры: 1, 3, например.

Заранее спасибо

C#
//Property
private ObservableCollection genres;

public ObservableCollection Genres
{
get { return genres; }
set { genres = value; }
}
//Method
public static ObservableCollection GetBands()
{
ObservableCollection list = new ObservableCollection();
try
{
string provider = ConfigurationManager.ConnectionStrings["ConnectionString"].ProviderName;
string connectionstring = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

DbConnection con = DbProviderFactories.GetFactory(provider).CreateConnection();
con.ConnectionString = connectionstring;
con.Open();

DbCommand command = DbProviderFactories.GetFactory(provider).CreateCommand();
command.CommandType = System.Data.CommandType.Text;
command.Connection = con;
command.CommandText = "SELECT * FROM Band";

//Bands ophalen
DbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Band b = new Band()
{
ID = reader["ID"].ToString(),
Name = reader["Name"].ToString(),
Picture = reader["Picture"].ToString(),
Description = reader["Description"].ToString(),
Twitter = reader["Twitter"].ToString(),
Facebook = reader["Facebook"].ToString(),
//Genres = (Genre)reader["Genres"] lijst van genres kunnen doorgeven, probleem met meerdere genres per band. Kijken filmpje inner joint
};

if (!DBNull.Value.Equals(reader["Picture"]))
{
b.Picture = reader["Picture"].ToString();
}
else
{
b.Picture = null;
}
list.Add(b);
}

//Genres ophalen via INNER JOIN
DbCommand command2 = DbProviderFactories.GetFactory(provider).CreateCommand();
command2.CommandType = System.Data.CommandType.Text;
command2.Connection = con;
command2.CommandText = "SELECT * FROM Band INNER JOIN Band_Genre On Band.ID = Band_Genre.BandID";

//Bands ophalen
DbDataReader reader2 = command2.ExecuteReader();
while (reader2.Read())
{
Genre g = new Genre()
{
ID = reader2["GenreID"].ToString(),
//Name = reader2[

};
}

reader.Close();
reader2.Close();
con.Close();
}

XAML:











Подробнее здесь: https://stackoverflow.com/questions/201 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»