2009-07-02 5 views
0

MySQLデータベースとASP .NET GridViewを接続するSqlDataSourceの設定作業を行います。ASP.NET with MySQL - DeleteCommand構文が正しく動作しない

削除コマンドは次のとおりです。

DeleteCommand="DELETE FROM troutetracking WHERE id=?id" 

削除パラメータは次のとおりです。

<DeleteParameters> 
    <asp:Parameter Name="id" Type="Int32" /> 
</DeleteParameters> 

私はGridViewの上の削除リンクを実行すると、次のエラーメッセージが表示されます。

MySql.Dataを.MySqlClient.MySqlException:パラメータ '?id'を定義する必要があります。

適切な構文は何ですか? MSDN's documentationで覆われている

答えて

0

このブログは、同様の問題に遭遇した:私が行うために必要な何

link text

「真の許可ユーザー環境変数を=」含まれる文字列への接続更新しました。

データソースを設定するときに[詳細設定]ボタンを使用してこれを行いました。

もあることを微調整する必要が削除クエリ:明確化レミーのため

DeleteCommand="DELETE FROM troutetracking WHERE [email protected]" 
1

異なるデータベース製品 はSQL、SQL文字列の 構文のさまざまな品種を使用するためには、識別され、 が使用されて 現在ADO.NETプロバイダに依存します ProviderNameプロパティによって。 SQL 文字列がパラメータ付きクエリまたは コマンドの場合、パラメータ の構文は、ADO.NETプロバイダ が使用されているかどうかによって異なります。たとえば、 プロバイダーが、 SqlDataSourceクラスの既定のプロバイダーである のSystem.Data.SqlClientである場合、パラメーターの構文 は「@パラメータ名」です。 ただし、プロバイダが System.Data.Odbcまたは System.Data.OleDbに設定されている場合、パラメータの プレースホルダは '?'です。 パラメータ付きSQLクエリと コマンドの詳細については、Using Parameters with the SqlDataSource Controlを参照してください。

+0

感謝。 私には分かりにくいのは、UPDATEクエリでは?id構文が使用されていますが、DELETEクエリでは?idが機能しません。 –

+0

構文は、実行されているSQL文の種類ではなく、使用されているSQLプロバイダに基づいているため、両方で同じにする必要があります。 –

関連する問題