Visual Studio не запускается при попытке извлечь данные из таблицы SQL с внешним ключом - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь создать приложение, которое подключается к базе данных SQL, и, как говорится в заголовке, всякий раз, когда я пытаюсь извлечь данные из таблицы, имеющей внешний ключ, это не работает. Он работает, без исключений, но приложение никогда не открывается. Я знаю, что соединение правильное, так как я могу без проблем извлекать отдельные таблицы меньшего размера без внешних ключей, но как только я пытаюсь соединить их внутренне, происходит сбой. Буду признателен за любую оказанную помощь. Не уверен, поможет ли это, но вот код, который я использовал для создания таблиц в SQL. Что-то не так с тем, как они соединяются?

CREATE TABLE GamesLibrary.Publisher
(
    PublisherId INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [Name] NVARCHAR(64) NOT NULL,
    Country NVARCHAR(64) NOT NULL
);

CREATE TABLE GamesLibrary.Developer
(
    DeveloperId INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [Name] NVARCHAR(64) NOT NULL,
    Country NVARCHAR(64) NOT NULL 
);

CREATE TABLE GamesLibrary.Genre
(
    GenreId INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [Name] NVARCHAR(64) NOT NULL,
);

CREATE TABLE GamesLibrary.Console
(
    ConsoleId INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [Name] NVARCHAR(32) NOT NULL,
);

CREATE TABLE GamesLibrary.Games
(
    GameId INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [Name] NVARCHAR(64) NOT NULL,
    GenreId INT NOT NULL FOREIGN KEY REFERENCES GamesLibrary.Genre(GenreId),
    ConsoleId INT NOT NULL FOREIGN KEY REFERENCES GamesLibrary.Console(ConsoleId),
    Rating INT NOT NULL
);

CREATE TABLE GamesLibrary.PublishedGame
(
    PublishedGameId Int NOT NULL IDENTITY(1,1) PRIMARY KEY,
    DeveloperId INT NOT NULL FOREIGN KEY REFERENCES GamesLibrary.Developer(DeveloperId),
    PublisherId INT NOT NULL FOREIGN KEY REFERENCES GamesLibrary.Publisher(PublisherId),
    GameId INT NOT NULL FOREIGN KEY REFERENCES GamesLibrary.Games(GameId),
    PublishDate INT NOT NULL
);

Вот код C#, который я пытаюсь запустить безуспешно. "scottcon" - это просто строка моего подключения.

SqlConnection connection = new SqlConnection(scottcon);

        string query = "SELECT g.Name AS 'Game Name', g.Rating AS 'Rating', gen.Name AS 'Genre', c.Name AS 'Console' FROM GamesLibrary.Games g INNER JOIN GamesLibrary.Genre gen ON gen.GenreId = g.GenreId INNER JOIN GamesLibrary.Console c ON g.ConsoleId = c.ConsoleId ORDER BY g.GameId";
        /// <summary>
        /// int used to see which table we are at for the search or add function
        /// </summary>
        public int state = 0;
        /// <summary>
        /// Default implementation
        /// </summary>
        public GamesLibrary()
        {
            InitializeComponent();
        }
        /// <summary>
        /// doesnt do anything, fernando added this
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GamesLibrary_Load(object sender, EventArgs e)
        {
            UX_Table.DataSource = GetDataSource(query);
        }

        private DataTable GetDataSource(string sql)
        {
            DataTable table = new DataTable();
            connection.Open();
            SqlCommand cmd = new SqlCommand(sql, connection);
            //cmd.ExecuteNonQuery();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(table);
            UX_Table.DataSource = table;
            connection.Close();

            return table;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...