C# 如何在SQL Server中增加外键中的id
我有两个数据库表C# 如何在SQL Server中增加外键中的id,c#,sql-server,C#,Sql Server,我有两个数据库表dtadd,列为address,city和id,这是外键,另一个表是dtperson,列为name,age和id,这是主键。我只想知道如何在外键中增加id 这是我的密码: private void button1_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(); con.ConnectionString = "server=.;database = mydata
dtadd
,列为address
,city
和id
,这是外键,另一个表是dtperson
,列为name
,age
和id
,这是主键。我只想知道如何在外键中增加id
这是我的密码:
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "server=.;database = mydata2;integrated security = true";
con.Open();
for (int i = 0; i < dataGridView1.Rows.Count-1 ; i++)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "insert into dtperson1 (name,age)values('" + dataGridView1.Rows[i].Cells[0].Value + "','" + dataGridView1.Rows[i].Cells[1].Value + "')";
cmd.Connection = con;
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.CommandText = "insert into dtadd (address,city)values('" + dataGridView1.Rows[i].Cells[2].Value + "','" + dataGridView1.Rows[i].Cells[3].Value + "')";
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
MessageBox.Show("datainserted");
}
private void按钮1\u单击(对象发送者,事件参数e)
{
SqlConnection con=新的SqlConnection();
con.ConnectionString=“服务器=;数据库=mydata2;集成安全性=true”;
con.Open();
对于(int i=0;i
您需要在dtperson
表中使用自动递增设置主键列
将行插入到dtperson
后,需要获取最后插入的记录id
select @id = Scope_Identity()
使用此
id
作为dtadd
表的外键id您需要在dtperson
表中使用autoincrement设置主键列
将行插入到dtperson
后,需要获取最后插入的记录id
select @id = Scope_Identity()
使用此
id
作为dtadd
表的外键id首先,您需要在数据库中将主键设置为自动递增
要获取最近添加的行的值
这就是你要找的问题。但在您的例子中,若您想在添加person的行之后获得它的值,那个么您可以使用
using (var con = new SqlConnection(ConnectionString)) {
int newID;
var cmd = "insert into dtperson1 (name,age)values(@val1,@val2);SELECT CAST(scope_identity() AS int)";
using (var insertCommand = new SqlCommand(cmd, con)) {
insertCommand.Parameters.AddWithValue("@val1", dataGridView1.Rows[i].Cells[0].Value);
insertCommand.Parameters.AddWithValue("@val2", dataGridView1.Rows[i].Cells[1].Value);
con.Open();
newID = (int)insertCommand.ExecuteScalar();
}
}
首先,您需要在数据库中将主键设置为自动递增 要获取最近添加的行的值 这就是你要找的问题。但在您的例子中,若您想在添加person的行之后获得它的值,那个么您可以使用
using (var con = new SqlConnection(ConnectionString)) {
int newID;
var cmd = "insert into dtperson1 (name,age)values(@val1,@val2);SELECT CAST(scope_identity() AS int)";
using (var insertCommand = new SqlCommand(cmd, con)) {
insertCommand.Parameters.AddWithValue("@val1", dataGridView1.Rows[i].Cells[0].Value);
insertCommand.Parameters.AddWithValue("@val2", dataGridView1.Rows[i].Cells[1].Value);
con.Open();
newID = (int)insertCommand.ExecuteScalar();
}
}
你想用increment它的值做什么?这样我就可以用id获取人名,你可以执行'select@id=Scope\u Identity()'查询它将返回最近添加的行的主键。我可以将此查询放在何处?您可以告诉我吗?您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入-检查您想用增量it的值做什么?这样我就可以使用idyou获取人名,您可以执行'select@id=Scope_Identity()'查询它将返回最近添加的行的主键。我可以将此查询放在哪里?请告诉我-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入-签出