目前我正在尝试使用使用SAP Sybase SQL Anywhere 12
以及整数。下面的代码运行正常:仅在传递整数时使用命名参数
public class Test
{
public int Str1
{
get;
set;
}
public string Str2
{
get;
set;
}
}
class Program
{
static void Main(string[] args)
{
using (SAConnection connection = new SAConnection("..."))
{
connection.Open();
Test test = connection.Query<Test>("SELECT :Str1 as Str1, :Str2 as Str2",
new Test() { Str1 = 35, Str2 = "42" }).FirstOrDefault();
Console.WriteLine($"Str1: {test.Str1} | Str2: {test.Str2}");
Console.ReadLine();
}
}
}
但是,当我改变Str2 = "42"
一些string
,比我得到下面的异常:
演员42A整数不可能
此异常当我使用以下代码时抛出:
Test test = connection.Query<Test>("SELECT :Str1 as Str1, :Str2 as Str2",
new Test() { Str1 = 35, Str2 = "42a" }).FirstOrDefault();
有没有一些已知的问题?这应该正常工作,因为我只是想传递一个字符串。
编辑
堆栈跟踪:
iAnywhere.Data.SQLAnywhere.SAException(0X80004005):Umwandeln冯 '42A' 奥夫整数nichtmöglich 贝iAnywhere.Data.SQLAnywhere.SACommand。 _ExecuteReader(CommandBehavior commandBehavior,布尔isExecuteScalar,布尔isBeginExecuteReader) bei iAnywhere.Data.SQLAnywhere.SACommand.ExecuteDbDataReader(CommandBehavior行为) bei System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(的CommandBehavior行为) 贝Dapper.SqlMapper.d__61
1.MoveNext() bei System.Collections.Generic.List
1..ctor(IEnumerable的1 collection) bei System.Linq.Enumerable.ToList[TSource](IEnumerable
1源) 贝Dapper.SqlMapper.Query [T](CNN的IDbConnection,字符串SQL,对象PARAM,IDbTransaction交易,布尔缓冲,可空1 commandTimeout, Nullable
1命令类型) 贝DapperSqlAnywhere.Program.Main(字串[] args)在C:\用户.... \ DapperSqlAnywhere \的Program.cs:Zeile 35.
感谢!
你能发布完整的堆栈跟踪吗? – sstan
在你的'Test'中,参数'Str2'设置为什么类型? – Draken
@Draken它总是一个字符串/ varchar。我会尽快发布整个堆栈跟踪 – BendEg