2012-08-02 60 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

如果您想从表格中获取最后一个主键,并且每次插入时都会自动增加,那么您可以要求其最大值。如果你想从数据库中获得,那么你可以使用范围标识。