는이 코드가? 범위에 대해 읽었지만 위의 코드에서이 코드를 어떻게 사용할 수 있는지 알지 못합니다.새 행은
새 레코드를 저장 한 후 마지막 ID를보고 양식으로 리디렉션하려고합니다. 내가 가장 간단한 솔루션을 찾고 있는데요 :)
는이 코드가? 범위에 대해 읽었지만 위의 코드에서이 코드를 어떻게 사용할 수 있는지 알지 못합니다.새 행은
새 레코드를 저장 한 후 마지막 ID를보고 양식으로 리디렉션하려고합니다. 내가 가장 간단한 솔루션을 찾고 있는데요 :)
당신은 데이터 어댑터의 Update 명령에서 직접 할 수 없어 참조하십시오. 두 개의 명령이 들어있는 사용자 정의 삽입 명령을 준비해야합니다. 당신의 레코드를 삽입 첫 번째, 두 번째는 연결에서 마지막으로 삽입 된 ID를 반환이 대신 업데이트 그냥 새를 확인하기 위해 데이터 테이블에 대해 AcceptChanges를 호출 호출, 기존의 코드와 함께 가야한다 물론
string insertText = @"INSERT INTO Szkoda (Likwidator,FirmaObslugujaca,
StanSzkody, CzyRegres, KrajZdarzenia)
values (@lik, @fir, @sta, @czy, @kra);
SELECT SCOPE_IDENTITY()";
SqlCommand cmd = new SqlCommand(insertText, connection);
cmd.Parameters.AddWithValue("@lik", tbLikwidator.Text);
cmd.Parameters.AddWithValue("@fir", DdFirma.Text);
cmd.Parameters.AddWithValue("@sta", DdStan.Text);
cmd.Parameters.AddWithValue("@cay", DdRegres.Text);
cmd.Parameters.AddWithValue("@kra", DdKraj.Text);
object result = cmd.ExecuteScalar();
if(result != null)
{
int lastInsertedID = Convert.ToInt32(result);
// now insert the row in your dataset table but instead of
// da.Update(ds, "Szkoda"); call
ds.Tables["Szkoda"].AcceptChanges();
}
귀하의 테이블에 기록하십시오.
좋아, @ 스티브 나는 잠시 동안 당신의 해결책을 사용할 것입니다. 하지만 말해, 같은 시간에 두 명의 사용자가 레코드를 삽입하면,이 사용자는 그에게 추가 된 레코드의 ID를 얻을까요 ?? –
예, [SCOPE_IDENTITY] (http://stackoverflow.com/questions/1920558/what-is-the-difference-between-scope-identity-identity-identity-and-ide)는 연결에서 생성 된 ID를 당신의 질문. 따라서 두 명의 사용자가이 코드를 동시에 실행하면 (어느 정도) 각 사람이 올바른 ID – Steve
을 수신하게되므로 매우 효과적입니다. 감사합니다. –
Aftre는 C# 코드에서 SQL 쿼리 (저장 프로 시저가 아닌)를 사용하여 레코드를 삽입하면 레코드 가져 오기 기능을 사용하여 마지막 레코드 ID를 선택할 수 있습니다 muliuser 경우, 이것은 잘못 될 것입니다) max() 함수를 사용합니다.
select * from Szkoda where ID IN (select max(id) from Szkoda)
그런 다음, 데이터를 삽입하는 저장 프로 시저에 SCOPE_Identity()
를 사용하여 C# 코드에서 값을 얻기 위해 출력 매개 변수를 사용하여 저장 프로 시저를 사용하는 경우.
CREATE PROCEDURE dbo.testSP
@Col1 VARCHAR(50),
@Col2 VARCHAR(20),
@new_identity INT = NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.TestTable(Col1, Col2) SELECT @Col1, @Col2;
SET @new_identity = SCOPE_IDENTITY();
END
GO
는이
Return identity of last inserted row from stored procedure
안녕하십니까. 귀하가 게시 한 코드에서 삽입 문이 어디에도 보이지 않습니다. 'Szkoda'라는 테이블의 모든 레코드를 선택하는 sql 명령을 만들었습니다. 인서트는 어디에 있습니까? Thanks – Christos
"szkoda"에서 모든 열을 선택하고 datarow-NewRow()에 의해 레코드를 삽입하십시오. 왼쪽에는 db의 열과 양식의 텍스트 상자에있는 값이 있습니다. –