簡體   English   中英

將所選值從一個表插入另一個表

[英]Insert selected values from one Table to another

我試圖從我的表中獲取包含有關我的書的信息的信息,並在按下“添加到購物車”時將其存儲到名為Orders的數據庫中。 但我無法弄清楚如何做到這一點。 我到處搜索並嘗試了我能想到的一切,所以有一些我不知道的事情。 能否請你幫我糾正這個陳述以給它帶來效果?

SqlCommand cmd2 = new SqlCommand("INSERT INTO Orders (ISBN, Title, Author, Price)"+ 
                                 "SELECT ISBN, Title, Author, Price FROM BooksInfo"+
                                 "WHERE BooksInfo.ISBN=@Id", con);
cmd2.Parameters.AddWithValue("@Id", Id);
cmd2.ExecuteNonQuery();

好吧,它看起來並不像你已經走得很遠,但是當你連接時,你需要在字符串的末尾添加空格

                         // note addition of space to end of each string fragment
SqlCommand cmd2 = new SqlCommand("INSERT INTO Orders (ISBN, Title, Author, Price) "+ 
                                 "SELECT ISBN, Title, Author, Price FROM BooksInfo "+
                                 "WHERE BooksInfo.ISBN=@Id", con);

否則你的SQL語句將是:

INSERT INTO Orders (ISBN, Title, Author, Price)SELECT ISBN, Title, Author, Price FROM BooksInfoWHERE BooksInfo.ISBN=@Id

這是一個語法錯誤,因為列列表和SELECT關鍵字之間沒有空格

我看到的其他一些事情:

  • 訂單表上是否沒有OrderID?
  • 為什么需要Order表中的Title和Author? 理想情況下,這些應該是BooksInfo外鍵
  • 訂單商品不應該在單獨的表中嗎? (如果有人訂兩本書怎么辦?)

試試這個:

SqlCommand cmd2 = new SqlCommand("INSERT INTO Orders (ISBN, Title, Author, Price) "+ 
                                 "SELECT ISBN, Title, Author, Price "+
                                 "FROM BooksInfo "+
                                 "WHERE BooksInfo.ISBN=@Id", con);

您當前在insert語句中沒有@Id參數,因此ID參數是多余的。

此外,要插入值,您需要使用Insert語句的相應Values (@ISBN, @Title, @Author, @Price)語句。 然后,您還需要以與您完成ID的方式類似的方式添加值的參數。

根據下面的評論,SQL將成為:

insert into DatabaseA..Orders (ISBN, Title, Author, Price) 
SELECT ISBN, Title, Author, Price from DatabaseB..BooksInfo
where BooksInfo.ISBN = @Id

如果你想從C#控制數據庫,那么你可以將它們作為字符串的一部分添加,而不是硬編碼。

為什么不在兩個不同的任務上分離這個任務1.從一個數據庫中選擇值並將它們放入一些對象orderCart; 2.使用orderCart的值插入或更新其他數據庫中的值首先 - 在這種情況下調試和理解代碼更容易

它是關於字符串連接。

SqlCommand cmd2 = new SqlCommand("INSERT INTO Orders (ISBN, Title, Author, Price)"+ 
                                 "SELECT ISBN, Title, Author, Price FROM BooksInfo"+
                                 "WHERE BooksInfo.ISBN=@Id", con);

SqlCommand會產生

INSERT INTO Orders (ISBN, Title, Author, Price)SELECT ISBN, Title, Author, Price FROM BooksInfoWHERE BooksInfo.ISBN=@Id

代替

INSERT INTO Orders (ISBN, Title, Author, Price)
SELECT ISBN, Title, Author, Price FROM BooksInfo
WHERE BooksInfo.ISBN=@Id

你可以在價格和BooksInfo之后添加空格或換行符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM