问题列表 - 第576页

使用ADO.NET和AddWithValue()处理空值

我有一个控件,在回发时,将表单结果保存回数据库.它通过遍历查询字符串来填充要保存的值.因此,对于以下SQL语句(为了讨论而大大简化)......

UPDATE MyTable
SET MyVal1 = @val1,
    MyVal2 = @val2
WHERE @id = @id
Run Code Online (Sandbox Code Playgroud)

...它会循环通过查询字符串键:

For Each Key As String In Request.QueryString.Keys
    Command.Parameters.AddWithValue("@" & Key, Request.QueryString(Key))
Next
Run Code Online (Sandbox Code Playgroud)

但是,我现在遇到的情况是,在某些情况下,这些变量中的某些变量可能不存在于查询字符串中.如果我不在querystring中传递val2,我会收到一个错误:System.Data.SqlClient.SqlException: Must declare the scalar value "@val2".

尝试检测SQL语句中的缺失值...

IF @val2 IS NOT NULL
UPDATE MyTable
SET MyVal1 = @val1,
    MyVal2 = @val2
WHERE @id = @id
Run Code Online (Sandbox Code Playgroud)

... 失败了.

攻击它的最佳方法是什么?我必须用RegEx解析SQL块,扫描查询字符串中不存在的变量名吗?或者,有更优雅的方法吗?

更新:检测VB代码隐藏中的空值会破坏将代码与其上下文分离的目的.我宁愿不为每个可能传递或不传递的可能变量的条件丢弃我的函数.

sql vb.net ado.net

3
推荐指数
1
解决办法
8743
查看次数

18
推荐指数
3
解决办法
8783
查看次数

在Common Lisp中编写++宏

我一直在尝试编写一个Lisp宏,它会出于语义原因而在其他编程语言中使用相当于++的++.我试图用几种不同的方式做到这一点,但它们似乎都没有用,并且所有都被解释器接受,所以我不知道我是否有正确的语法.我对如何定义它的想法是

(defmacro ++ (variable)
  (incf variable))
Run Code Online (Sandbox Code Playgroud)

但是在尝试使用它时,这给了我一个简单的错误.什么会使它工作?

lisp macros common-lisp

6
推荐指数
6
解决办法
2090
查看次数

PHPUnit测试的目录布局?

我是一名长期从事PHP项目的Java程序员,我正在努力让PHPUnit工作起来.在Java中进行单元测试时,通常将测试用例类和常规类放入不同的目录中,如下所示 -

/src  
  MyClass.java

/test  
  MyClassTest.java
Run Code Online (Sandbox Code Playgroud)

等等.

使用PHPUnit进行单元测试时,遵循相同的目录结构是否常见,或者是否有更好的方法来布置测试类?到目前为止,我能让"include("MyClass.php")"语句正常工作的唯一方法是将测试类包含在同一目录中,但是当我推送到时,我不想包含测试类生产.

php phpunit unit-testing

13
推荐指数
1
解决办法
4153
查看次数

与DataReader一起使用时,输出参数不可读

当使用DataReader对象通过存储过程从数据库(例如SQL Server)访问数据时,在执行之前添加到Command对象的任何输出参数在读取后都不会被填充.我可以很好地读取行数据,以及所有输入参数,但不能读取输出参数.

.net parameters ado.net stored-procedures datareader

10
推荐指数
1
解决办法
6331
查看次数

为什么在Java中使用StringBuffer而不是字符串连接运算符

有人告诉我,使用StringBufferJava连接字符串比使用+运算符Strings 更有效.当你这样做时会发生什么?有什么StringBuffer不同的做法?

java optimization string-concatenation

54
推荐指数
6
解决办法
7万
查看次数

ASP.NET的Comet实现?

我一直在寻找在浏览器中实现类似gmail的消息传递的方法,并得出了Comet的概念.但是,我还没有找到一个很好的.NET实现,允许我在IIS中执行此操作(我们的应用程序是用ASP.NET 2.0编写的).

我找到的解决方案(或者可以想到的解决方案)需要为每个用户留下一个正在运行的线程 - 这样一旦收到消息就可以向他返回响应.当然,这根本不可扩展.

所以我的问题是 - 你知道Comet的ASP.NET实现以不同的方式工作吗?这甚至可以用于IIS吗?

asp.net iis comet

103
推荐指数
3
解决办法
4万
查看次数

如何将PHPUnit与Zend Framework一起使用?

我想知道如何用Zend_Test编写PHPUnit测试,一般用PHP编写.

php testing phpunit unit-testing zend-framework

41
推荐指数
3
解决办法
3万
查看次数

版本中的数字通常代表什么(即v1.9.0.1)?

也许这是一个愚蠢的问题,但我总是假设每个数字描述的时期代表了软件的一个组成部分.如果这是真的,他们会代表不同的东西吗?我想开始为我的软件的不同版本分配版本,但我不确定它应该如何构建.我的软件有五个不同的组件.

versions

127
推荐指数
6
解决办法
7万
查看次数

VC++中未初始化的内存块

众所周知,Visual C++运行时标记未初始化或刚刚释放的具有特殊非零标记的内存块.有没有办法完全禁用此行为,而无需手动将所有未初始化的内存设置为零?这是因为我的有效非空检查造成了破坏0xFEEEFEEE != 0.

嗯,也许我应该更好地解释一下.我创建并初始化一个变量(通过new),一切都很好.当我释放它(通过删除)时,它将指针设置为0xFEEEFEEE而不是NULL.当我插入一个适当的检查NULL,因为所有管理自己的内存的好程序应该,我提出问题,因为0xFEEEFEEE通过NULL检查没有问题.有没有什么好的方法,除了NULL在删除它们时手动设置所有指针,以检测何时已释放内存?我宁愿不使用Boost只是因为我不想要开销,虽然它可能很小,因为这是我唯一使用Boost的东西.

c++ memory allocation

5
推荐指数
6
解决办法
1万
查看次数