我正在尝试使一些MSSQL代码也运行在MYSQL上,我只是打了这个地雷.Google表示,通常的方法是简单地执行插入操作,然后选择last_insert_ID()来查找写入的内容.
不过,这并不会让我觉得在多用户环境中是安全的.那里有一个狭窄的窗口,其他用户可以插入一些东西并导致错误的返回值.如何安全地插入并获取插入记录的密钥?
Google提出了各种关于清理Web访问查询的讨论,但我找不到任何解决我关注的问题:
在ac#程序中清理用户输入数据.这必须通过可逆转换完成,而不是通过删除.作为问题的一个简单例子,我不想破坏爱尔兰名字.
什么是最好的方法,是否有任何库函数可以做到这一点?
这种语言显然没有合适的功能,这似乎很奇怪.
我发现自己的数据最好被表达为一个多维数组,但它完全不变,任何人都无法在不改变相关代码的情况下改变它.面对Delphi中的这些东西,答案是显而易见的 - 一个常量,其值是表.但是,C#似乎不支持这样的东西.
谷歌显示许多人对此抱怨,没有好的答案.
人们如何处理这种情况?
(并且不要说常量不属于代码 - 我碰到的最后一个是4个项目的所有可能的排列.除非时空变化的本质,这是固定的.)
发生了什么??有一个答案非常接近,我问的是一个细节,它消失了!简单地声明一个数组排序工作 - 唯一的问题是数组分配将每次运行.我前面的那个包含96个值 - 如何让它只初始化一次?我是否只需要接受范围远大于应有范围的范围?(因为它代表的是一个3行程序,其内部相当于O(n ^ 3)程序.)
它理解如果断言是假的,Debug.Assert将抛出而不是继续,因此它知道断言在此之后是真的.
我想跟Trace.Assert一样的推理.是的,你可以继续,如果你继续经过这样一个警告,然后抛出一个空的那就是你的问题.我想摆脱那些虚假的可能的空引用消息.
我想在命名空间中搜索包含某个方法的所有类.如果一个类包含一个方法,那么我想创建一个类的实例并运行该方法.
显然我必须从反思开始,但我仍然坚持要去哪里.
编辑:
接口不是我想要的方式.
我正在寻找的是将测试功能嵌入到代码中,但是只有一个调用接口.如果有自检功能,请调用它.如果没有,请忽略它.
C#,使用VS2010,我有一些没有意义的东西.
在启动时,我的程序需要从文本文件中加载数百k.在确保加载代码工作正常后,我将它放在后台线程中.只要从IDE内部运行一切都很好,但是当它独立运行时,线程会说它已经完成了.这当然是热潮.
触发代码:
BackgroundWorker Background = new BackgroundWorker();
Background.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DatabaseLoaded);
Background.DoWork += new DoWorkEventHandler(delegate { Database.Load(); });
Background.RunWorkerAsync();
Run Code Online (Sandbox Code Playgroud)
以及正在蓬勃发展的东西DatabaseLoaded()
.
我放了一些消息框来跟踪发生了什么:Load()
方法的第一行和最后一行以及第一行DatabaseLoaded()
.
在IDE中,这会触发我的期望: Load()
开始,Load()
完成,DatabaseLoaded()
.但是,当单独运行时,我Load()
开始,DatabaseLoaded()
然后是未处理的异常框(加载器甚至没有构建空表,更不用说填充它们了.)
我疯了还是微软?
方程式很简单,int = int * int / int
; 然而,整数的乘法可能会变得太大,我试图Int64
在执行之前将所有内容都强制转换为s,然后将结果转换回int.因此我有:
int = (int)((Int64)int * (Int64)int / (Int64)int);
Run Code Online (Sandbox Code Playgroud)
并且它抱怨所有三个Int64演员阵容.
注意:目标是x86,因为我使用的是32位库. 机器本身是64位.我可以用x64目标来理解它.
我知道不间断空格,但我遇到了相反的问题,谷歌甚至没有发现其他人问这个问题。
我有一段文本:( <option A>/<option B>/<option C>
选项的数量是可变的)我只想在斜杠处中断。防止它在其他地方损坏是微不足道的——用不间断的空格替换空格。我所困惑的是允许它在斜线后断裂。我是否只需要在斜杠后面插入一个额外的空格,即使这看起来不太好?
我的程序中有两种日期格式.在一台特定的机器上:
date.ToString("M/d/yyyy h:m:s tt")
正在生产像11222013 12:0:0 AM
.(这:0:0
是可以接受的;它是一个通常不会被人读取的文件.)date.ToString("MM/dd/yyyy hh:mm tt")
正在生产像11222013 12:00 AM
.我的代码是在C#中.那个机器的人有一些编程经验,并且能够用Delphi获得同样的行为.为什么格式化日期中缺少正斜线?或者我应该建议他核武并铺好违规的盒子?
Resharper大大简化了一个循环,但是现在它让我想到一个未使用的变量,我该如何干净利落地做到这一点?
foreach (Field Test in Line.Where(IsStartKey))
Phase = ScanPhase.Processing;
...
private static bool IsStartKey(Field Test)
{
return Test.Value.StartsWith("Cabinet Name");
}
Run Code Online (Sandbox Code Playgroud)
测试当然是在原版中使用但在简化之后它没用.该行已被标记,但未提出任何改进建议.
c# ×8
resharper ×2
.net ×1
code-cleanup ×1
constants ×1
html ×1
linq ×1
multi-user ×1
mysql ×1
reflection ×1
security ×1
sql ×1
windows ×1