1

私はこのようなことをしたいと思います:

Dim pId As TdParameter = New TdParameter With {.ParameterName = "p_id", .SourceColumn = "id", .TdType = TdType.Integer, .Direction = ParameterDirection.Output}

そして、次のように行きます:

cmd.Parameters.Add(pId);

cmd.CommandText = "insert into employee (id, name, age) values (?, 'bob', 34)"

cmd.ExecuteNonQuery();

次にpId.Value、新しいレコードの Id 列 (ID 列) の値を返します。もしそれができたら、それは素晴らしいことです。

4

2 に答える 2

1

INSERT ステートメントを実行すると、結果セットが返されることはありません。せいぜい、クライアントに返されるアクティビティ カウントを取得できます。ID 列の値を取得するには、INSERT の完了後に SELECT ステートメントが必要になります。

于 2012-07-14T16:59:25.370 に答える
0

次のテーブルがあるとします。

  • ID 整数 (デフォルトではサイクルなしで生成される ID 列)
  • 名前 varchar(20)
  • メール varhcar(50)

.ExecuteNonQuery()挿入ステートメントに使用する代わりに、代わりに使用してください.ExecuteReader()。実際には、挿入されたばかりのレコードが返され、Identity 列の値が含まれます。

Using cmd As TdCommand = MyConnection.CreateCommand
    cmd.GeneratedDataBehavior = GeneratedDataBehavior.IdentityColumn
    cmd.CommandText = "insert into mydb.employee (name, email) values ('bob', 'bob@snob.com')"
    Using reader As TdDataReader = cmd.ExecuteReader
        While reader.Read
            Id = reader.GetInt64(reader.GetOrdinal("Id"))
            iRowsInserted += 1
        End While
    End Using
End Using
于 2015-10-20T11:16:04.480 に答える