C#がMySQLストアドプロシージャの結果データを誤解しているように見える問題に直面しています。C#MySQLのフィールド型の誤った解釈
ストアドプロシージャは、3つのInt32列の後ろに4つのVarchar/String列を返します。または少なくともそれが必要です。
列1-5は正常に戻りますが、何らかの理由で列6がImage/Byte []列として解釈されているように見えますが、なぜストアドプロシージャがVarchar (255)列に格納されます。
これまでにこの問題に遭遇したことはありません。どんな助けもありがとう。
以下はC#コードです。
using (MySqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "viewu";
command.Parameters.AddWithValue("uname", "ausername");
reader = command.ExecuteReader();
dt1.Load(reader);
gridControl1.DataSource = dt1;
}
私はSPにアクセスできないので、そのコードを投稿することはできません。ただし、以下は結果セットの例です。私はそれが問題の原因を強調した値だと思うが、考えはない。
|ID1|ID2|Flagged|Att|Operation|Value|Type|
|---|---|-------|---|---------|-----|----|
|740|100|1 | |=~ |NULL |User|
|740|100|1 | |!* |. |Item|
|740|100|1 | |:= |PPP |Item|
|740|100|1 | |:= |**base-qos-tp,bb-qos-sch-map,8m,bb-qos-cl-dscp,bb-qos-rw-1p,-24,-24**|Item|
|740|100|1 | |:= |8MOS |Item|
コメント
- からUPDATEプロバイダは6.9.7
dt1
が型なしデータテーブルであるNETコネクタ/です。- ストアドプロシージャのコードは使用できません。第6列のタイプ(
Value
)は、DBAによってvarchar(255)
であることが確認されました。 - 接続文字列でcharset = utf8を指定し、blobをutfs = yesとして扱うと、残念ながら問題の解決に失敗しました。
- データベースのバージョンは、私が誤解すなわち根本原因の理由を発見していない5.1.41
コードをしたとして、ビットが失われてしまった一部の人に役立ちますか?エラーメッセージ? – hagello
うん。そして "それはすべき" - あなたはどうしたらそれが確実になるのですか?そして、それをreproするために十分なコードを投稿してください。助けて?より有能な人を雇う。さらに情報を提供してください。 – TomTom
使用しているドライバ(どちらが?Connector/Net?something?)に問題がある可能性がありますが、コードまたはストアドプロシージャのいずれかに問題がある可能性が最も高いです。コードとメッセージを投稿してください。それは助けが不可能なので、返されるものは何も言及していません:DataTable? DataReader? NHibernateエンティティ? –