Sql server 如何连接表格?
我想在本地数据库中输入3个表。这将是一个个人理财程序。我不知道我是如何把这些联系起来的。 我收到一个错误:System.Data.SqlClient.SqlException:“INSERT语句与外键约束“FK_uuOutflowCash_uuUserId_u2739D489”冲突。我的代码如下: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
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();