我正在尝试部署一个使用SQL Server CE 4.0数据库的小型Windows窗体应用程序.我不希望运行此应用程序的每个系统都必须安装SQL Server CE 4.0,所以我试图获得应用程序中包含的任何所需的DLL.
当我检查引用列表时,SQL Server CE 4.0的唯一引用是System.Data.SqlServerCe.包含该DLL的DLL,System.Data.SqlServerCe.dll在尝试连接到数据库时仍会导致以下错误:
无法加载与版本8876的ADO.NET提供程序对应的SQL Server Compact的本机组件.安装正确版本的SQL Server Compact.有关更多详细信息,请参阅知识库文章974247.
我已经看过一些文章谈论不同版本的SQL Server CE,但就我所知,他们列出了其他版本的DLL.应用程序将运行的系统应该至少安装了安装了.NET 4.0的Windows 7,如果这样做有所不同的话.
我尝试了这里的步骤来添加文件,如链接所示:http://erikej.blogspot.com/2011/02/using-sql-server-compact-40-with.html
使用构建中包含的那些文件,程序编译时没有任何错误,但是当在辅助系统上运行时,GUI永远不会出现(公共Form1()的一部分包括从SQL CE数据库中获取数据的方法)和程序几秒后才关闭.事件查看器显示以下错误:
错误应用程序名称:Dispatch Review Assistant.exe,版本:1.0.0.0,时间戳:0x50915d3c错误模块名称:KERNELBASE.dll,版本:6.1.7601.17932,时间戳:0x503285c2异常代码:0xe0434352错误偏移量:0x000000000000caed错误进程ID: 0x1028错误应用程序启动时间:0x01cdb78c10761c73错误应用程序路径:C:\ Users\deLucain\Desktop\Release\Dispatch Review Assistant.exe错误模块路径:C:\ Windows\system32\KERNELBASE.dll报告ID:4e4f45e3-237f-11e2- bd76-14dae92102de
我正在尝试将我的查询转换为参数化,但是在查找语法时遇到了问题.根据VS2012,这是没有错误的,但是在运行时我得到一个错误,因为参数的值没有被替换到查询中.
这是示例代码:
IfxCommand query = new IfxCommand("SELECT slm_slmno FROM slmmas WHERE
slm_logon = @Logon");
query.Parameters.Add("@Logon", logon);
Run Code Online (Sandbox Code Playgroud)
以下是运行时查询返回的错误:
Error Message = ERROR [42000] [Informix .NET provider][Informix]A syntax
error has occurred.
Sql Query = SELECT slm_slmno FROM slmmas WHERE slm_logon = @Logon
Run Code Online (Sandbox Code Playgroud)
从错误中可以清楚地看出,登录的值没有被替换为命令.我正在使用Informix 10.0.我查看了文档(位于http://publib.boulder.ibm.com/infocenter/idshelp/v111/index.jsp?topic=/com.ibm.net_cc.doc/dqx1db2commandclass.htm)但有没有明确的例子显示我想要实现的简单用法.关于我如何更好地处理这个问题的任何建议?
我试图通过ODBC在Informix上使用参数化查询,但任何添加参数的尝试都会失败并出现以下异常:
$exception {"ERROR [42000] [Informix .NET provider][Informix]A syntax error has occurred."} System.Exception {IBM.Data.Informix.IfxException}
这是失败的代码:
List<ItemAttribute> items = con.Query<ItemAttribute>("select * from oe_cnvwrk where cwr_genero = @cwr_genero", new{cwr_genero = cwr_genero}).ToList();
像这个例子一样使用没有参数的它可以完美地工作,但是打开应用程序直到注入攻击:
ItemHeader itemHeader = con.Query<ItemHeader>("select * from oe_cnvhdr where hdr_control_id = " + hdr_control_id).Single();
我能够在这里找到一个关于这个完全相同问题的先前列出的问题,但它从未被回答过.我希望有人会知道如何处理这个问题:Dapper没有添加参数
任何想法都可以解决这个问题,或者是否有一种不同的方法来处理可能有效的Dapper参数化?
关于这个问题已经有很多问题了,但是尽管看了很多问题,但我很难看出问题出在哪里.当我提交以下表单时,模型为空.关于我在这里做错了什么的建议?
型号(部分):
public class ItemHeader
{
public string hdr_contact_name { get; set; }
public string hdr_contact_method { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.NotFound);
}
int id2 = (int)id;
DB db = new DB();
ItemHeader itemHeader = db.GetHeader(id2);
if (itemHeader == null)
{
return new HttpStatusCodeResult(HttpStatusCode.NotFound);
}
else
{
return View(itemHeader);
}
}
[HttpPost]
public ActionResult Details(ItemHeader itemHeader)
{
string test;
DB db = new DB();
Response.Write(db.UpdateHeader(itemHeader));
Response.End();
return …Run Code Online (Sandbox Code Playgroud)