先行ゼロをスティックするのは苦労しています。SQLiteプリペイドステートメントで先行ゼロを保持していません
私はこのようになりますプリペアドステートメントを持っている:多くの場合、ゼロをリードしている問題の
SQLiteCommand insertSQL = new SQLiteCommand(@"INSERT INTO Inventory(
AssetTag, Vendor, Device, Attribute, DeviceType, System, Location, OnLoan, Notes, LastModifiedTime, LastModifiedPerson, IsDeleted)
VALUES (@AssetTagParam, @VendorParam, @DeviceParam, @AttributeParam, @DeviceTypeParam, @SystemParam, @LocationParam, @OnLoanParam, @NotesParam, @LastModifiedTimeParam, @LastModifiedPersonParam, @IsDeletedParam)", conn);
フィールドには、「システム」です。この行で構築されています:
var SystemParam = new SQLiteParameter("@SystemParam", System.Data.DbType.String) { Value = item.System };
私はItem.Systemから引くテキストボックスに「0159」を入力した場合、私はItem.Systemが実際に一度「0159」の値を保持しないことを確認した実行時にSQL文が準備されていることを確認します。これは私がタイプと思うように、私はそれをDBのSystem.Data.DbType.Stringにキャストしようとしています。 SQLiteStudioで直接DBにデータを入力すると、先行ゼロが保持されます。
ここからどこに行くのかわかりません。 System.Data.DbTypeには、私が試してみたいテキストの抽象度の高い別の型はありません。私は本当にここからどこに行くのか分からない。私はここで私の先頭のゼロを保存することができますか?
編集:DB側にタイプ解明
var AssetTagParam = new SQLiteParameter("@AssetTagParam", System.Data.DbType.Int32) { Value = item.AssetTag };
var VendorParam = new SQLiteParameter("@VendorParam", System.Data.DbType.String) { Value = item.Vendor };
var DeviceParam = new SQLiteParameter("@DeviceParam", System.Data.DbType.String) { Value = item.Device };
var AttributeParam = new SQLiteParameter("@AttributeParam", System.Data.DbType.String) { Value = item.Attribute };
var DeviceTypeParam = new SQLiteParameter("@DeviceTypeParam", System.Data.DbType.String) { Value = item.DeviceType };
var SystemParam = new SQLiteParameter("@SystemParam", System.Data.DbType.String) { Value = item.System };
var LocationParam = new SQLiteParameter("@LocationParam", System.Data.DbType.String) { Value = item.Location };
var OnLoanParam = new SQLiteParameter("@OnLoanParam", System.Data.DbType.Boolean) { Value = item.OnLoan };
var NotesParam = new SQLiteParameter("@NotesParam", System.Data.DbType.String) { Value = item.Notes };
var LastModifiedTimeParam = new SQLiteParameter("@LastModifiedTimeParam", System.Data.DbType.String) { Value = item.LastModifiedTime };
var LastModifiedPersonParam = new SQLiteParameter("@LastModifiedPersonParam", System.Data.DbType.String) { Value = item.LastModifiedPerson };
var IsDeletedParam = new SQLiteParameter("@IsDeletedParam", System.Data.DbType.Boolean) { Value = item.IsDeleted };
、すべてのフィールドがINTSありASSETTAGとAssetID、除く型STRINGです。 OnLoanとIsDeletedはブーレーンです。
テーブル内のフィールドのデータ型を知っておくと便利です。 – STLDeveloper
もちろん!私は元のコメントにprepブロック全体を追加し、DB側でそのタイプを明確にしました。 – mkautzm
"DB側では、すべてのフィールドがSTRING型です" SQLには "STRING"データ型がありません。あなたはTEXTを意味しますか? BOOLEANのデータ型は存在しません。http://sqlite.org/datatype3.html – leonbloy