Как соединить столы? - PullRequest
       5

Как соединить столы?

0 голосов
/ 31 марта 2019

Я хочу 3 таблицы в моей локальной базе данных. Это будет программа личных финансов. Я не знаю, как мне это соединить. Я получил ошибку: System.Data.SqlClient.SqlException: «Оператор INSERT вступил в конфликт с ограничением FOREIGN KEY» FK__outflowCash__userID__2739D489 Мой код находится здесь:

CREATE TABLE [dbo].[user] (
    [ID]      INT           IDENTITY (1, 1) NOT NULL,
    [name] VARCHAR (25)  NOT NULL,
    [email]   VARCHAR (40)  NOT NULL,
    [password]  VARCHAR (40) NOT NULL,
    PRIMARY KEY CLUSTERED ([ID] ASC)
);
CREATE TABLE [dbo].[inflowCash] (
    [ID]            INT           IDENTITY (1, 1) NOT NULL,
    [category]  VARCHAR (20)  NOT NULL,
    [amount]     INT           NOT NULL,
    [date]      DATE          NOT NULL,
    [comment] VARCHAR (255) NULL,
    [userID]         INT           NULL,
    PRIMARY KEY CLUSTERED ([ID] ASC),
    FOREIGN KEY ([userID]) REFERENCES [dbo].[user] ([ID]) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE [dbo].[outflowCash] (
    [ID]            INT           IDENTITY (1, 1) NOT NULL,
    [category]  VARCHAR (20)  NOT NULL,
    [amount]     INT           NOT NULL,
    [date]      DATE          NOT NULL,
    [comment] VARCHAR (255) NULL,
    [userID]         INT           NULL,
    PRIMARY KEY CLUSTERED ([ID] ASC),
    FOREIGN KEY ([userID]) REFERENCES [dbo].[user] ([ID]) ON DELETE CASCADE ON UPDATE CASCADE
);

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

Когда вы вставляете в outflowCash, значения userID должны указывать на действительное значение id в вашей таблице user, поскольку в таблице outflowCash указана ссылка на "внешний ключ".

0 голосов
/ 31 марта 2019

мой запрос:

var conn = new SqlConnection(@"Server=(localdb)\MSSQLLocalDB; AttachDbFileName=|DataDirectory|database.mdf;");
conn.Open();

int id;

var cmd = new SqlCommand($"SELECT  ID,  FROM user WHERE email = '{textboxEmail.Text}'", conn);
var reader = cmd.ExecuteReader();
if (reader.Read())
{
 id = (int)reader[0];
}

conn.Close();

conn.Open()
int amount = int.Parse(textboxbAmount.Text);

var cmd2 = "INSERT INTO outflowCash(category, amount, date, comment, userID) VALUES" +
$"('{comboboxCategory.selectedValue}', '{amount}','{datetimpickerDate.Value.ToString("yyyy-MM-dd")}', +
$" ('{textboxComment.Text}', '{id}');";

 var adapter = new SqlDataAdapter();
 adapter.InsertCommand = new SqlCommand(cmd2, conn);
 adapter.InsertCommand.ExecuteNonQuery();
  conn.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...