这是我的代码的一部分,我将数据插入到两个表中。 表主键定义为自动增量:: 歌曲表PK是song_id。 文件表PK是File_id。 我想将song_id作为FK插入到文件表中。 我该怎么办? 感谢
class Ball {
constructor(x, y, r, sAngle, rAngle) {
this.x = x;
this.y = y;
this.r = r;
this.sAngle = sAngle;
this.rAngle = rAngle;
this.speed = null;
}
drawBall() {
ctx.beginPath();
ctx.arc(this.x, this.y, this.r, this.sAngle, this.rAngle);
ctx.fillStyle = "#FF0000";
ctx.fill();
}
moveBall() {
this.x += this.speed;
}
}
var greenBall = new Ball(0, 0 , 10, 0, 0);
greenBall.speed = 5;
greenBall.moveBall();
document.write(greenBall.x);
答案 0 :(得分:1)
MySQL提供LAST_INSERT_ID()
函数,该函数返回autoincrement列的最后一个值。要使用它,您将执行一个 INSERT
, SELECT
该函数的值,并 INSERT
将值返回到第二个表中。
您还应该使用预准备语句而不是动态SQL,原因很多,我不会在这里讨论。
我对C#并不十分满意,但我会试一试:
string MyConnection1 = "datasource=localhost;port=3306;username=root;password=123";
string Query1 = "insert into myproject.song " +
"(song_name, house_number, song_text) " +
"values " +
"(@SongName, @HouseNum, @SongText)"; //Insert song name, song huose count and full song full text
string Query2 = "SELECT LAST_INSERT_ID()";
string Query3 = "insert into myproject.file " +
"(File_Location, Words_number, Lines_number, File_name, song_id) " +
"values " +
"(@FileLoc, @WordCount, @LineCount, @FileName, @SongId"; //Insert the table file details
try
{
MySqlConnection myConn1 = new MySqlConnection(MyConnection1);
myConn1.Open();
MySqlCommand Cmd1 = new MySqlCommand(Query1, myConn1);
Cmd1.Parameters.AddWithValue("@SongName", line1);
Cmd1.Parameters.AddWithValue("@HouseNum", paragraphs.Length);
Cmd1.Parameters.AddWithValue("@SongText", filetext);
Cmd1.ExecuteNonQuery();
MySqlCommand Cmd2 = new MySqlCommand(Query2, myConn1);
object result = Cmd2.ExecuteScalar();
int songId = Convert.ToInt32(result);
MySqlCommand Cmd3 = new MySqlCommand(Query3, myConn1);
Cmd3.Parameters.AddWithValue("@FileLoc", strfilename);
Cmd3.Parameters.AddWithValue("@WordCount", words.Length);
Cmd3.Parameters.AddWithValue("@LineCount", totallineCnt);
Cmd3.Parameters.AddWithValue("@FileName", fileNameOnly);
Cmd3.Parameters.AddWithValue("@SongId", songId);
Cmd3.ExecuteNonQuery();
myConn1.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
这可能与语法错误有关,但应该给你足够的大纲来开始。
此外,你真的应该在一个交易中包装整个操作(两个 INSERT
和一个 SELECT
),但我离开了作为读者的练习。