我一直在尝试不同的方法来让我的代码工作。
我对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
由于存在主键外键关系,请帮助我如何添加乐队中的一个以上成员
请给我正确的解决方案,因为我没有得到它。
答案 0 :(得分:0)
BNamn是BandMedlemmar表中的主键。 将主键更改为PRIMARY KEY(BNamn,MedlemsNamn),然后重试。
请不要连接字符串来构建SQL,你会被黑客入侵。请改用参数。