2012-08-02 83 views
4

是否可以返回數據庫中給出的最後一個主鍵?從數據庫檢索主鍵

這部分是我如何連接並添加東西到我的數據庫,但如果您需要更多的信息請詢問。

public partial class MainWindow : Window 
{ 

System.Data.SqlClient.SqlConnection con; 
System.Data.SqlClient.SqlDataAdapter da; 

DataSet sessions; 

主要

public MainWindow() 
{ 
    InitializeComponent(); 
} 

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    con = new System.Data.SqlClient.SqlConnection(); 

    sessions = new DataSet(); 

    con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\md\\PokerDataBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; 

    con.Open(); 

    string sql = "SELECT * From Sessions"; 
    da = new System.Data.SqlClient.SqlDataAdapter(sql, con); 
    da.Fill(sessions, "Sessions"); 

    con.Close(); 

    System.Data.SqlClient.SqlCommandBuilder cb; 
    cb = new System.Data.SqlClient.SqlCommandBuilder(da); 

    DataTable dt = sessions.Tables["Sessions"]; 


    DataRow table = sessions.Tables["Sessions"].Rows[position]; 
    table[0] = "Some Data"; 
    table[1] = "Some Data"; 
    table[2] = "Some Data"; 
    table[3] = 2; 
    table[4] = 3; 
    sessions.Tables["Sessions"].Rows[2].Delete(); 
    sessions.Tables["Sessions"].Rows.InsertAt(table, 2); 

    da.Update(sessions, "Sessions"); 
} 
} 

感謝在看看!

+3

「最後的主鍵」是什麼意思?你的意思是最後一個*插入的主鍵? – 2012-08-02 14:22:53

+1

我標記爲備份。我認爲讓某人不高興問問題是非常不公平的! – series0ne 2012-08-02 14:27:16

+0

嗨,謝謝你的回答!是的,我的意思是最後一把鑰匙。對於那個很抱歉。 – 2012-08-03 07:24:12

回答

4

我想你是要求最後插入的主鍵值?然後SCOPE_IDENTY是你的朋友。以look hereMSDN爲詳細信息

+0

謝謝你的回答@Yaroslav。我仍然有一些麻煩的理解。在我的代碼中,我會用SELECT SCOPE_IDENTITY()做什麼? – 2012-08-03 07:23:15

+0

從你的代碼中,在插入之後,你應該調用這個語句,它返回的值是你插入的最後一個主鍵。我不知道你想達到什麼,但也許你會想要在存儲過程中包裝你的插入(和其他東西,如果需要的話),並在末尾包含對SCOPE_IDENTITY()的調用。通過這種方式,您可以完成所有工作。 – Yaroslav 2012-08-03 07:32:25

+0

我還不是很瞭解如何使用SCOPE_IDENTITY()。在da.Update行(會話,「會話」)之後,我可以創建一個整型變量,比如int prmKey;然後prmKey = SCOPE_IDENTITY(「sessions」);再次感謝 – 2012-08-03 07:57:31

0

如果您想從表格中獲取最後一個主鍵,並且每次插入時都會自動增加,那麼您可以要求其最大值。如果你想從數據庫中獲得,那麼你可以使用範圍標識。