由于篇幅限制,也为了使读者容易地理解参数化查询的基本用法,本文只对ADO、ADO.NET中的参数化查询作了大致介绍,没有涉及更多的细节。这里提及几个重要的概念,有兴趣的读者可查阅本文最后列出的相关资料。
SQL中一个常见的特殊值就是NULL,它既不是0,也不等同于空字符串。初学数据库编程时千万别把它与VB中的Nothing、C#中Null和VC中的NULL混为一谈,更不能用字符串“NULL”作为参数来代替。在VB中,如果参数为NULL,把关键字Null赋值给参数即可,在.NET中则专门用DBNull类表示。
如前所述,参数可以是输入参数,也可以是输出参数或输入输出参数。本文所有例子中的参数都是输入参数,毕竟输入参数要常见得多。使用输出参数与使用输入参数不同的地方,是在执行SQL语句前不必赋值,而在执行后读取参数的值。
本文前面已经举例说明如何使用二进制数据类型的参数,不过当数据非常长时,例子中的方式并不适用。好在ADO、ADO.NET中都专门提供了大数据字段的输入方式,有需要的读者可查阅相应的文档。注意不是所有的驱动程序都支持大数据的高效输入。
比输入大数据字段更常见的是大批量的数据输入。如果需要输入很多行的数据,参数化方式尽管节省了编译SQL语句的时间,但还是要逐行地执行。ADO、ADO.NET同样也都提供了一种或多种批量输入的解决方案,这比逐行添加要高效得多。不过如果数据量非常大的话,最高效的方式应该是使用数据库开发商提供的专用接口。
参考文献:
1. Visual Basic 6.0联机手册Microsoft
2. Visual Studio.Net 2005联机手册中关于数据访问技术的章节(http://msdn.microsoft.com/zh-cn/library/wzabh8c4(v=VS.80).aspx) Microsoft
3. Visual C++.Net 2005联机手册中关于数据访问技术的章节(http://msdn.microsoft.com/zh-cn/library/7wtdsdkh(v=VS.80).aspx) Microsoft
4. Visual C++.Net 2005联机手册中关于编译器对COM技术支持的章节(http://msdn.microsoft.com/en-us/library/h31ekh7e(v=VS.80).aspx) Microsoft
5. Windows Platform SDK中关于ADO和ODBC的章节(http://msdn.microsoft.com/en-us/library/aa968814(v=VS.85).aspx) Microsoft
6. SQL Server 2005联机手册中关于客户端编程的章节(http://msdn.microsoft.com/zh-cn/library/ms130892(v=SQL.90).aspx) Microsoft
(讲座结束,谢谢大家。欢迎跟帖交流)