我经常写这样的DataReader代码:
try
{
dr = cmd.ExecuteReader(CommandBehavior.SingleResult);
while (dr.Read())
{
// Do stuff
}
}
finally
{
if (dr != null) { dr.Close(); }
}
Run Code Online (Sandbox Code Playgroud)
它是安全的替代try,并finally只用using各地块DataReader的创作?我想知道的原因是因为在所有微软的例子中我都看到他们使用了一个用于连接的但是总是明确地调用Close()它DataReader.
Heres是使用DataReader检索数据的一个例子 (ADO.NET):
static void HasRows(SqlConnection connection)
{
using (connection)
{
SqlCommand command = new SqlCommand(
"SELECT CategoryID, CategoryName FROM Categories;",
connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
Console.WriteLine("{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
}
}
else …Run Code Online (Sandbox Code Playgroud) 我想运行一个类似的查询
select ... as days where `date` is between '2010-01-20' and '2010-01-24'
Run Code Online (Sandbox Code Playgroud)
并返回如下数据:
days ---------- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24
好的,所以我正在迭代一个集合.对于满足某些条件的每个成员,我想在该成员上调用一个方法:
我现在就是这样做的:
foreach(MyObject obj in myCollection)
{
if(obj.Property == theSearchValue)
obj.DoIt();
}
对于它的价值,我认为foreach是最可读,最清晰的方法(我们可以谈论花括号的细节),所以这对我来说更像是一个学术/学习问题.
问题:用Linq表达这一点的最佳方法是什么?是否有一种Linqy方法可以比我的foreach循环更清晰/可读/可维护?如果是这样,它是否在不牺牲性能的情况下这样做?
(我看到很多linq操作看起来很整洁,但是它们经常导致创建中间枚举,或者有时多次枚举一个集合 - 我的小foreach在1遍中解决了问题,没有创建临时集合. )
如何匹配不区分大小写的正则表达式并同时删除它
我读到这个以获得不区分大小写的匹配,使用标志"i"
sed -e "/pattern/replace/i" filepath
Run Code Online (Sandbox Code Playgroud)
并删除使用d
sed -e "/pattern/d" filepath
Run Code Online (Sandbox Code Playgroud)
我还读到我可以组合多个标志,如2iw
我想知道sed是否可以将i和d结合起来我尝试过以下但是它没有用
sed -e "/pattern/replace/id" filepath > newfilepath
Run Code Online (Sandbox Code Playgroud) 我在TFS的"我的查询"中保存了一些相当复杂的工作项查询.我不想让他们成为团队查询,因为我们已经有太多的团队查询,并且大多数团队都不关心这些特定的查询.
有没有办法与感兴趣的团队中的另一个成员分享这些查询.
有没有办法在我的机器上导出它们,以便他可以将它们导入到他的"我的查询"中?
Adobe Photoshop CS3/4 SDK有很多关于Filter,Import,Export等插件的例子,但我没有找到任何说明如何编写8BX插件的内容.
原因是,我需要写一个是将新的下拉菜单添加到Photoshop根工具栏(它显示文件,编辑,图像...窗口.帮助下拉菜单).我见过像OneSoftware这样的产品在Adobe Photoshop CS3\Plug-Ins\Extensions目录中安装了一个8BX插件,导致PS为OneSoft添加adrop down菜单.这表明这是一个可解决的问题:-)
我尝试通过更改SDK示例中的现有插件但没有去.具体来说我修改了资源文件:
resource 'PiPL' (ResourceID, plugInName " PiPL", purgeable)
{
{
Kind { **Extension** },
Name { plugInName "..." },
...
Run Code Online (Sandbox Code Playgroud)
尽管使用扩展类型,PS从不加载插件.它也不会产生任何编译时间或加载错误.
任何人对如何做到这一点都有任何想法?
如何找出最初引入Matlab/toolbox版本的特定函数或类?我知道我可以查看所有发行说明,或谷歌可以提供帮助,但还有更好的方法吗?
如何使用C#在xsd simpleType上检索这些枚举类型?这是示例简单类型?
<xs:simpleType name="PaymentType">
<xs:restriction base="xs:string">
<xs:enumeration value="Cash" />
<xs:enumeration value="CreditCard" />
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
谢谢
我尝试在不同操作系统和体系结构之间通过网络传递二进制SQLite DB - 它不起作用.
你们用的是什么格式?我尝试过复制SQLite的shell.c并使用hack up argc,argv,stdin在Mac上成功调用shell_main().可惜我正在为iPhone开发,它只在那里失败.
每个人都做这么可怕的事吗?
我正在学习C++(显然是CLI),每当我发布一个问题,说我正在使用C++时,有人会说我不是在使用C++,而是使用C++/CLI.我不太确定有什么区别,因为我对此极为陌生,但它似乎让每个人都感到不安.任何人都可以对差异有所了解吗?
作为第二个注释,我问这个的原因是因为有人建议我使用CLI来使我的C#项目可以访问一个方法.通过我的构造函数,我的C++项目中的一切运行正常,但现在我希望能够从我的C#项目中调用相同的方法.