0

InsertParameters にパラメーターがあります。設定しようとすると、エラーが発生します::

データ型 sql_variant から uniqueidentifier への暗黙的な変換は許可されていません。CONVERT 関数を使用してこのクエリを実行します

これがc#の私のコードです:

String complexID = Guid.NewGuid().ToString();
SqlDataSource1.InsertParameters["PKComplexID"].DefaultValue = complexID;

誰でも助けることができますか?

4

5 に答える 5

1

SqlDbTypeonを変更する必要がありますInserting:

protected void SqlDataSource1_Inserting(object sender, 
  SqlDataSourceCommandEventArgs e) { 
    SqlParameter insertedKey = 
      e.Command.Parameters["@PKComplexID"] as SqlParameter; 
    insertedKey.SqlDbType = SqlDbType.UniqueIdentifier; 
}

参考文献

http://forums.asp.net/t/1712791.aspx/1 :

オブジェクトは、uniqueidentifier フィールドの型が正しくありません。残念ながら、VisualStudio デザイナーには uniqueidentifier がありません。そのため、タイプ Object が与えられます。例外をスローする一意の識別子にすることもできません。したがって、dataSource_Inserting イベントで、このパラメータ タイプ フォーム コード ビハインド ファイルを変更する必要があります。Inserting イベントであることを確認してください。そこで、任意のパラメーターを取得し、uniqueidentifier フィールド タイプを uniqueidentifier に設定できます。

GUID と DataSource コントロール

于 2012-05-04T17:58:52.420 に答える
1

まだ試していませんが、最初の反応は次のとおりです。

Guid complexID = Guid.NewGuid();
SqlDataSource1.InsertParameters["PKComplexID"].DefaultValue = complexID;
于 2012-05-04T18:04:49.893 に答える
0

パラメータの型をオブジェクトから文字列に変更しました。それは解決されます。

于 2012-05-07T06:33:34.677 に答える
0

文字列に変換しないでください。次のようにコードを修正します。

Guid complexID = Guid.NewGuid(); 
于 2012-05-04T18:05:09.797 に答える