【发布时间】:2016-09-14 22:30:35
【问题描述】:
我有一段代码在这里准备查询:
var AssetTagParam = new SQLiteParameter("@AssetTagParam", SqlDbType.Int) { Value = item.AssetTag };
var VendorParam = new SQLiteParameter("@VendorParam", SqlDbType.Text) { Value = item.Vendor };
var DeviceParam = new SQLiteParameter("@DeviceParam", SqlDbType.Text) { Value = item.Device };
var AttributeParam = new SQLiteParameter("@AttributeParam", SqlDbType.Text) { Value = item.Attribute };
var DeviceTypeParam = new SQLiteParameter("@DeviceTypeParam", SqlDbType.Text) { Value = item.DeviceType };
var SystemParam = new SQLiteParameter("@SystemParam", SqlDbType.Text) { Value = item.System };
var LocationParam = new SQLiteParameter("@LocationParam", SqlDbType.Text) { Value = item.Location };
var OnLoanParam = new SQLiteParameter("@OnLoanParam", SqlDbType.Binary) { Value = item.OnLoan };
var NotesParam = new SQLiteParameter("@NotesParam", SqlDbType.Text) { Value = item.Notes };
var LastModifiedTimeParam = new SQLiteParameter("@LastModifiedTimeParam", SqlDbType.Text) { Value = item.LastModifiedTime };
var LastModifiedPersonParam = new SQLiteParameter("@LastModifiedPersonParam", SqlDbType.Text) { Value = item.LastModifiedPerson };
var IsDeletedParam = new SQLiteParameter("@IsDeletedParam", SqlDbType.Binary) { Value = item.IsDeleted };
SQLiteCommand insertSQL = new SQLiteCommand("INSERT INTO Inventory(AssetTag, Vendor, Device, Attribute, DeviceType, System, Notes, OnLoan, Location)" +
" VALUES (@AssetTagParam, @VendorParam, @DeviceParam, @AttributeParam, @DeviceTypeParam, @SystemParam, @NotesParam, @OnLoanParam, @LocationParam)", conn);
insertSQL.Parameters.Add(AssetTagParam);
insertSQL.Parameters.Add(VendorParam);
insertSQL.Parameters.Add(DeviceParam);
insertSQL.Parameters.Add(AttributeParam);
insertSQL.Parameters.Add(DeviceTypeParam);
insertSQL.Parameters.Add(SystemParam);
insertSQL.Parameters.Add(LocationParam);
insertSQL.Parameters.Add(OnLoanParam);
insertSQL.Parameters.Add(NotesParam);
insertSQL.Parameters.Add(LastModifiedTimeParam);
insertSQL.Parameters.Add(LastModifiedPersonParam);
insertSQL.Parameters.Add(IsDeletedParam);
作为参考,Item 类如下所示:
public class Item
{
public int AssetID { get; set; }
public int AssetTag { get; set; }
public string Vendor { get; set; }
public string Device { get; set; }
public string Attribute { get; set; }
public string DeviceType { get; set; }
public string System { get; set; }
public string Location { get; set; }
public bool OnLoan { get; set; }
public string Notes { get; set; }
public string LastModifiedTime { get; set; }
public string LastModifiedPerson { get; set; }
public bool IsDeleted { get; set; }
}
当我运行这段代码时,我总是会遇到一般错误:
输入字符串的格式不正确。
在试图找出这个问题的根源之后,假设我在这个过程中输入了错误,我遇到了我所有的 Param 变量的dbType 设置为@987654324 的问题@。我以为我是用参数SqlDbType.Text设置的,但我一定是误会了?
如何将输入的 dbtype 设置为 Text 而不是 Int32?
【问题讨论】:
-
SqlDbType是用于 SQLServer 的通用DbType应该与 SQLite 一起使用 - 您使用的是标准 NET 提供程序吗? -
哦,我现在明白了!将 'SqlDbType.Text' 更改为 'System.Data,DbType.String' 可以很好地解决这个问题!
-
我认为你也不需要 Binary 作为 bool。
-
如果你使用了另一种单行语法:
cmd.Parameters.Add("@n", SqlDbType.String).Value = "something";它会发现类型不匹配