私は、SqlDataSourceにリンクされたGridViewを使用してSQLテーブルに挿入するasp.netアプリケーションを持っています。問題は、挿入時に使用する 'Identity'パラメータがわからないことです。 'Identity'列は自動的にインクリメントされるはずですが、挿入時にIdentityパラメータがnullであってはならないという例外があります。どのようにしてこの動作ができるようにinsert文を作成するか、次の正しいIDを指定する方法#ありがとう。ここでASP.NET:SqlDataSource insert-identityパラメータ
は私のSqlDataSourceコードです:
<asp:SqlDataSource ID="VehiclesSqlDS" runat="server"
ConnectionString="<%$ ConnectionStrings:RamRideOpsConnectionString %>"
SelectCommand="SELECT * FROM [Vehicles]"
ConflictDetection="CompareAllValues"
InsertCommand="INSERT INTO [Vehicles] ([Identity], [CarNum], [MaxPassengers], [Status], [CurrPassengers], [StartAdd], [EndAdd], [AvgRideTime], [numRides]) VALUES (@Identity, @CarNum, @MaxPassengers, @Status, @CurrPassengers, @StartAdd, @EndAdd, @AvgRideTime, @numRides)"
OnInserting="VehiclesSqlDS_Insert"
OldValuesParameterFormatString="original_{0}">
<InsertParameters>
<asp:Parameter Name="Identity" Type="Int32 "/>
<asp:Parameter Name="CarNum" Type="Int32" DefaultValue="-1"/>
<asp:Parameter Name="MaxPassengers" Type="Int32" DefaultValue="3" />
<asp:Parameter Name="Status" Type="String" DefaultValue="Ready" />
<asp:Parameter Name="CurrPassengers" Type="Int32" DefaultValue="0" />
<asp:Parameter Name="StartAdd" Type="String" />
<asp:Parameter Name="EndAdd" Type="String" />
<asp:Parameter DbType="Time" Name="AvgRideTime" />
<asp:Parameter Name="numRides" Type="Int32" DefaultValue="0" />
</InsertParameters>
</asp:SqlDataSource>
これは正しいようですが、私はまだnull例外、任意のアイデアはなぜこれがありますか? [SCOPE_IDENTITYがnullであるようです] – SHeinema
あなたはそれをデバッグしましたか? MSDNのリンクに従います。それは助けになるかもしれません –
ええ、デバッグ、リンクを見て、ちょうど戻ってそれがあった方法を入れて、1つの挿入のために働くはずだったランダムなデフォルト値を選んだが、それは常に私にnullエラーを与える.. – SHeinema