Sql server 如何连接表格?

Sql server 如何连接表格?,sql-server,Sql Server,我想在本地数据库中输入3个表。这将是一个个人理财程序。我不知道我是如何把这些联系起来的。 我收到一个错误:System.Data.SqlClient.SqlException:“INSERT语句与外键约束“FK_uuOutflowCash_uuUserId_u2739D489”冲突。我的代码如下: CREATE TABLE [dbo].[user] ( [ID] INT IDENTITY (1, 1) NOT NULL, [name] VARCHAR

我想在本地数据库中输入3个表。这将是一个个人理财程序。我不知道我是如何把这些联系起来的。 我收到一个错误:System.Data.SqlClient.SqlException:“INSERT语句与外键约束“FK_uuOutflowCash_uuUserId_u2739D489”冲突。我的代码如下:

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)
);
我的问题是:

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();

outflowCash
中插入时,
userID
值必须指向
user
表中的有效
id
值,因为您有一个“外键”“在流出现金表上指定的参考。

您好,我认为您缺少一些插入脚本。也不例外,你试图插入一个用户ID为的流入现金,但在用户表上不存在。这是外键的主要功能。请给我们看看你的查询键,我发布了。一个问题:我的连接理论可以吗?用户连接到流入和流出现金,但我想计算流入和流出,所以我也会连接这些?或者怎么做?谢谢你!我发现了问题,我没有说将“id”值从LoginForm传递到MainForm。我把它弄错了。。。
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
);
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();