从数据库中检索主键

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
“last primary key” 你的意思是“最后插入的主键(primary key)吗?” - Mike Bailey
1
我标记了这个备份。我认为因为提问而给某人打分是非常不公平的! - Matthew Layton
嗨,感谢您的回答!是的,我指的是最后一个主键。对此我很抱歉。 - Q-bertsuit
2个回答

4

我猜你是在询问最后插入的主键值?那么SCOPE_IDENTY就是你的好朋友。请参考这里MSDN以获取详细信息。


谢谢您的回答,@Yaroslav。我仍然有些难以理解。在我的代码中,我该如何使用SELECT SCOPE_IDENTITY()? - Q-bertsuit
从您的代码中,在插入之后立即调用此语句,它返回的值是您最后插入的主键。我不知道您想要实现什么,但也许您会想要将插入(如果需要的话还有其他内容)包装在存储过程中,并在末尾包含对 SCOPE_IDENTITY() 的调用。这样一来,您只需进行一次调用就可以完成所有操作。 - Yaroslav
我仍然不太明白如何使用SCOPE_IDENTITY()。在da.Update(sessions, "Sessions")这行之后,我可以只声明一个整型变量,比如int prmKey; 然后 prmKey = SCOPE_IDENTITY("sessions"); 吗?再次感谢。 - Q-bertsuit
请看这里http://stackoverflow.com/questions/9675364/scope-identity-in-batched-sqlclient-commands和这里https://dev59.com/tmncs4cB2Jgan1zn97sB。我认为那些答案会非常有帮助。 - Yaroslav

0

如果您想从表中获取最后一个主键,并且它在每次插入时自动递增,那么您可以请求其最大值。如果您想从数据库中获取,那么可以使用作用域标识。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接