gpt4 book ai didi

c# - 将值插入外键 MySQLCommand C#

转载 作者:行者123 更新时间:2023-11-30 22:53:00 27 4
gpt4 key购买 nike

我一直在尝试不同的方法来让我的代码正常工作。

我对 C# 和 DB 都很陌生。但问题是我正在尝试为我添加乐队名称和成员的音乐事件修复数据库。

我有 2 个表。一个和乐队在一起,一个和乐队成员在一起。我在 Visual Studio C# 中使用 MySQLCommand

我的用于向 MySQL 类插入代码的按钮代码

    private void bt_LäggTill_Band_Medlem_Click(object sender, EventArgs e)
{
MySql mySQL = new MySql();
MySqlConnection myConn = mySQL.GetServer();
// string insert = @"Insert Into BandMedlemar(BNamn , MedlemsNamn)Values ('" + cb_Band_Medlemar.Text.ToString() + "',(Select BNamn from Band Where BNamn = '" + cb_Band_Namn.Text.ToString() + "'))";
// string insert = "Insert Into BandMedlemar(MedlemsNamn , BNamn) Select val.MedlemsNamn , f.BNamn from (Values ('" + cb_Band_Medlemar.Text.ToString() + "','" + cb_Band_Namn.Text.ToString() + "')) val(MedlemsNamn,BNamn) Left Join Band f Useing (BNamn)";
string insert =
"Insert Into BandMedlemar(MedlemsNamn , BNamn) " +
"Select '" + cb_Band_Medlemar.Text.ToString() + "' , BNamn " +
"From Band Where BNamn='" + cb_Band_Namn.Text.ToString() + "'";
int count = 1;
string para = cb_Band_Medlemar.Text.ToString().Replace(" ", "");
string para2 =cb_Band_Medlemar.Text.ToString();
mySQL.Insert(myConn, insert, count, para, para2);
Update();
}

我尝试了一些让它们存在的东西。

然后是我的SQL代码将数据发送到数据库

    public void Insert(MySqlConnection myConn , string text , int count , string para , string para2)
{
try
{
myConn.Open();
MySqlCommand cmd = new MySqlCommand(text, myConn);
//cmd.Connection = myConn;
//cmd.CommandText = text;
cmd.Prepare();
string[] splited = para.Split('@');
string[] splited2 = para2.Split('@');
int number = 0;
while (count != 0)
{
cmd.Parameters.AddWithValue("@" + splited[number], splited2[number]);
count--;
number++;
}
cmd.ExecuteNonQuery();
myConn.Close();
}
catch (Exception e)
{
Console.WriteLine(e);
myConn.Close();
}
}

该代码也适用于具有多个参数的普通插入。

有关更多信息,我发布了我为乐队成员创建的表格

CREATE TABLE BandMedlemar 
( BNamn varchar(20) NOT NULL default '',MedlemsNamn varchar(30) NOT NULL,
Info varchar(50) default NULL, PRIMARY KEY (BNamn),
CONSTRAINT BandMedlemar_ibfk_1 FOREIGN KEY (BNamn) REFERENCES Band (BNamn)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

由于存在主键外键关系,请帮助我如何添加超过一个乐队的成员

请给我正确的解决方案,因为我没有得到它。

最佳答案

BNamn 是 BandMedlemmar 表中的主键。将主键更改为 PRIMARY KEY (BNamn, MedlemsNamn) 并重试。

并且请不要连接字符串来构建 SQL,否则您会被黑。请改用参数。

关于c# - 将值插入外键 MySQLCommand C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27525022/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com