Jag vill lägga till en post i en databas via ADO.NET och sen vill jag få fram vilket id den fick genom @@IDENTITY, men jag vet inte riktigt hur jag ska göra. Något i denna stilen borde fungera: Vad gör CMD.ExecuteScalar? Kan jag använda den för alla typer av frågor som returnerar svar?@@IDENTITY i ADO.NET
För att lägga till något kör jag:
<code>
Dim CN As New System.Data.OleDb.OleDbConnection
CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\databas.mdb"
Dim CMD As New System.Data.OleDb.OleDbCommand
CMD.Connection = CN
CMD.CommandText = "INSERT INTO Tabell (Fält1) VALUES ('test')"
CMD.CommandType = CommandType.Text
CMD.Connection.Open()
CMD.ExecuteNonQuery()
CMD.Connection.Close()
CMD = Nothing
CN = Nothing
</code>
För att läsa något kör jag:
<code>
Dim ds As New DataSet()
Dim da As New System.Data.OleDb.OleDbDataAdapter(SQL, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\databas.mdb")
da.Fill(ds)
da = Nothing
Dim row As DataRow
For Each row In ds.Tables(0).Rows
Messagebox.Show(row("fält1").ToString)
Next
ds = Nothing
</code>
Att först lägga till fältet med den ena koden och sen läsa @@IDENTITY med den andra fungerar inte och det beror väl på att jag "ansluter" till databasen på nytt efter att jag har lagt till posten, men jag vet inte riktigt hur jag ska kombinera dom där två. Eller borde jag göra på nått helt annat sätt?
ThomasSv: @@IDENTITY i ADO.NET
<code>
Dim CN As New System.Data.OleDb.OleDbConnection
CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\databas.mdb"
Dim CMD As New System.Data.OleDb.OleDbCommand
CMD.Connection = CN
CMD.CommandText = "INSERT INTO Tabell (Fält1) VALUES ('test')"
CMD.CommandType = CommandType.Text
CMD.Connection.Open()
CMD.ExecuteNonQuery()
CMD.CommandText = "SELECT @@IDENTITY"
NyttId = CMD.ExecuteScalar()
CMD.Connection.Close()
CMD = Nothing
CN = Nothing
</code>
/JohanSv:@@IDENTITY i ADO.NET
Thomas