Member 13554627 Ответов: 1

Как я могу связать свои базы данных?


я хочу дать оценку каждому aliasnaam, который я заполняю .
CREATE TABLE [dbo].[Persoon] (
    [Id]        INT        IDENTITY (1, 1) NOT NULL,
    [Aliasnaam] NCHAR (10) NOT NULL,
    [ScoreID]   INT        NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FK_Persoon_ToTable] FOREIGN KEY ([ScoreID]) REFERENCES [dbo].[Score] ([Id])
);


CREATE TABLE [dbo].[Score] (
    [Id]             INT IDENTITY (1, 1) NOT NULL,
    [Aantal_punten]  INT NULL,
    [Aantal_strikes] INT NULL,
    [Aantal_spares]  INT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);


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

я пробовал некоторые запросы, но это не помогло
 public List<persoon> spelers()
        {

            SqlConnection data = new SqlConnection(Connectionstring);
            data.Open();
            string query = "Select Aliasnaam FROM Persoon INNER JOIN Score ON Score.Id = ScoreID";
            SqlCommand cmd = new SqlCommand(query, data);
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {

                    persoon speler = new persoon();

                    // Lees de gegevens van de student in.
                    speler.Voegtoe(reader.GetString(0));


                    // En voeg deze toe aan de lokale lijst.
                    Spelers.Add(speler);

                }

            }
            data.Close();
            return Spelers;


public List<score> punten()
        {
            SqlConnection data = new SqlConnection(Connectionstring);
            data.Open();
            string query = "Select Aantal_punten,Aantal_strikes,Aantal_spares FROM Score" ;
            SqlCommand cmd = new SqlCommand(query, data);
            score punten = new score();
            using (SqlDataReader reader = cmd.ExecuteReader())
                 
            {
      
                    while (reader.Read())
                    {

                       

                        // Lees de gegevens van de student in.
                        punten.voegtoeaantpnt(reader.GetInt32(0));
                        punten.voegtoeaantstr(reader.GetInt32(1));
                        punten.voegtoeaantsprs(reader.GetInt32(2));

                        // En voeg deze toe aan de lokale lijst.
                        Punten.Add(punten);

                    }
            }
            data.Close();
            return Punten;
pre>

1 Ответов

Рейтинг:
2

Samuel Corpuz

CREATE TABLE [dbo].[Persoon] (
    [Id]        INT        IDENTITY (1, 1) NOT NULL,
    [Aliasnaam] NCHAR (10) NOT NULL,
    [ScoreID]   INT        NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FK_Persoon_ToTable] FOREIGN KEY [dbo].[Persoon].([ScoreID]) REFERENCES [dbo].[Score].([ScoreID])
);


CREATE TABLE [dbo].[Score] (
    [Id]             INT IDENTITY (1, 1) NOT NULL,
    [ScoreID]        INT NULL,
    [Aantal_punten]  INT NULL,
    [Aantal_strikes] INT NULL,
    [Aantal_spares]  INT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);



Имя внешнего ключа всегда должно быть одинаковым.
В вашей таблице столбец оценки [Id] является первичным ключом. Он отличается от внешнего ключа.
Просто включите другое имя столбца [ScoreID] для ограничения уникального ключа в таблицу баллов.


 public List<persoon> spelers()
        {

            SqlConnection data = new SqlConnection(Connectionstring);
            data.Open();
//Include
         string query = "Select P.Aliasnaam,P.ScoreID FROM Persoon as 'P' INNER JOIN Score as 'S' ON S.ScoreID = P.ScoreID where P.ScoreID = "+01+"";
            SqlCommand cmd = new SqlCommand(query, data);
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {

                    persoon speler = new persoon();

                    // Lees de gegevens van de student in.
                    speler.Voegtoe(reader.GetString(0));


                    // En voeg deze toe aan de lokale lijst.
                    Spelers.Add(speler);

                }

            }
            data.Close();
            return Spelers;


public List<score> punten()
        {
            SqlConnection data = new SqlConnection(Connectionstring);
            data.Open();
     //Include where in the last part for filtering. For Example The person ScoreID is equal to 01 then in the table Score you will only get the ScoreID equal to 01
// e.i. string query = "Select Aantal_punten,Aantal_strikes,Aantal_spares FROM Score where Score = "+01+"" ;

       string query = "Select Aantal_punten,Aantal_strikes,Aantal_spares FROM Score" ;
            SqlCommand cmd = new SqlCommand(query, data);
            score punten = new score();
            using (SqlDataReader reader = cmd.ExecuteReader())
                 
            {
      
                    while (reader.Read())
                    {
                        // Lees de gegevens van de student in.
                        punten.voegtoeaantpnt(reader.GetInt32(0));
                        punten.voegtoeaantstr(reader.GetInt32(1));
                        punten.voegtoeaantsprs(reader.GetInt32(2));

                        // En voeg deze toe aan de lokale lijst.
                        Punten.Add(punten);
                    }
            }
            data.Close();
            return Punten;
pre>




Используйте запрос вставки, если вы хотите вставить оценочную доску в каждого человека.
Вставить запрос для таблицы баллов необходимо.


//ScoreID must get from table persoon.
public void InsertValues(int ScoreID)
{
string query="INSERT INTO Score (id,ScoreId,Aantal_punten,Aantal_strikes,Aantal_spares) VALUES (@id,@ScoreID, @Aantal_punten,@Aantal_strikes,@Aantal_spares)"
//DO the SQL CONNECTION AND SQL COMMAND 

//the @ value will accept the values single quote special characters for secure insertion.
command.Parameters.AddWithValue("@id","abc")
command.Parameters.AddWithValue("@ScoreID","abc")
command.Parameters.AddWithValue("@Aantal_punten","abc")
command.Parameters.AddWithValue("@Aantal_strikes","abc")
command.Parameters.AddWithValue("@Aantal_spares","abc")

command.ExecuteNonQuery();
}


The rest is up to you Good Luck!!.


Member 13554627

большое вам спасибо за комментарий, Я пытаюсь сделать то, что вы сказали. но я не могу изменить таблицы, я получаю ошибку обновления.

Samuel Corpuz

удалить и создать таблицу