小编Dav*_*.ca的帖子

使用SQL View或SQL Query?

我正在开发一个从MS-SQL服务器获取数据的应用程序(2005).在命令文本中,我可以像这样传递一个sql查询:

string query = "SELECT T1.f1, T1.f2, T2.f3 FROM table1 T1 join table2 T2" +
   "on T1.id = T2.id AND T1.dt = T2.dt ..."
....
cmd.CommandText = query;
Run Code Online (Sandbox Code Playgroud)

我也可以将查询作为我的SQL服务器上的视图,如下所示:

 CREATE VIEW V1 AS
   "SELECT T1.f1, ..."
Run Code Online (Sandbox Code Playgroud)

然后我可以在这样的简化查询中使用视图:

 string query = "SELECT f1, f2, f3 FROM V1";
 ....
 cmd.CommandText = query;
Run Code Online (Sandbox Code Playgroud)

我不确定哪条路更好.视图会比SQL查询更快吗?顺便说一下,我在这里展示的查询是一个简化的查询.实际查询SELECT比较复杂.

c# sql-server

9
推荐指数
1
解决办法
8494
查看次数

SQL插入一行或多行数据?

我正在使用控制台应用程序将数据插入到MS SQL Server 2005数据库.我有一个要插入的对象列表.这里我使用Employee类作为示例:

List<Employee> employees;
Run Code Online (Sandbox Code Playgroud)

我能做的是在这个时间插入一个对象:

foreach (Employee item in employees)
{
  string sql = @"INSERT INTO Mytable (id, name, salary) 
    values ('@id', '@name', '@salary')";
  // replace @par with values
  cmd.CommandText = sql; // cmd is IDbCommand
  cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

或者我可以像这样构建一个balk插入查询:

string sql = @"INSERT INTO MyTable (id, name, salary) ";
int count = employees.Count;
int index = 0;
foreach (Employee item in employees)
{
   sql  = sql + string.format(
     "SELECT {0}, '{1}', {2} ",
     item.ID, item.Name, item.Salary);
   if ( …
Run Code Online (Sandbox Code Playgroud)

c# sql t-sql sql-server sql-server-2005

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

检查文件是否存在并在PowerShell中运行批处理文件?

这可能是一个简单的问题,但我是PowerShell的新手,无法找到方法.基本上,如果指定的文件不存在,我必须运行.BAT文件.文件名在文件夹中的文件名为" mmddyyy .dat",其中mmddyyyy是今天的月份,日期(如果<10则为0前缀)和年份.伪代码将是这样的:

 $File = "C:\temp\*mmddyyyy*.dat" # how to parse Get-Date mmddyyyy and build this pattern?
 #if $File exist # check any file exist?
     .\myBatch.bat  # run the bat file, can I run it in hidden mode?
Run Code Online (Sandbox Code Playgroud)

powershell

9
推荐指数
2
解决办法
1万
查看次数

在远程PC上运行PowerShell脚本

我在远程PC(RPC001)上安装了PS 1.0.我使用Windows Sysinternals工具PSExec.exe在远程执行以下过程:

 PSExec \\RPC001 -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2
Run Code Online (Sandbox Code Playgroud)

我之后可以看到PowerShell.exe进程在远程PC上运行,但它实际上什么也没做,只是挂在那里.我试着在脚本中放一个简单的"Write-Output/Host"代码.我通过RTS在遥控器上运行相同的脚本,它在那里工作.

不确定我是否遗漏了使用PSExec运行脚本的任何其他内容,或者它是PSExec.exe限制.我想在远程启动一个PS脚本,在本地做一些事情(在本地压缩一些文件并删除旧文件).

我在Stackoverflow中问了一个类似的问题:PowerShell 运行远程进程.唐建议我使用PSExec.这听起来像是解决问题的另一种方法.但是,我无法使用PowerShell.有什么办法让PS在远程PC上工作?

顺便说一句,我不能使用PS 2.0,因为我的网络不允许我安装PS 2.0所需的Windows XP SP3.

powershell sysinternals

9
推荐指数
2
解决办法
9万
查看次数

在Interface中定义可选的实现方法?

是否可以使用可选的实现方法定义接口?例如,我的核心库中有以下接口定义作为IDataReader:

public interface IDataReader<T> {
  void StartRead(T data);
  void Stop();
}
Run Code Online (Sandbox Code Playgroud)

但是,在我当前的实现中,从未使用或实现过Stop()方法.在我的所有实现类中,必须使用throw NotImplementedExcetion()作为默认值来实现此方法:

class MyDataReader : IDataReader<MyData> {
   ...
   public void Stop()
   {
     // this none implementaion looks like uncompleted codes
     throw NotImplementedException();
   }
Run Code Online (Sandbox Code Playgroud)

当然,我可以删除throw异常代码并将其保留为空.

当我设计这个数据阅读器界面时,我认为它应该提供一种方法来停止阅读过程.也许我们将来某个时候会使用Stop().

无论如何,不​​确定是否可以将此Stop()方法作为可选的实现方法?我能想到的唯一方法是要么定义两个接口,一个是stop,另一个是没有IDataReader和IDataReader2.另一个选择是将这个打破到这样的接口:

 interface IDataReader<T> {
    void StartRead(T data);
 }

 interface IStop {
    void Stop();
 }
Run Code Online (Sandbox Code Playgroud)

在我的实现案例中,我必须转换或使用IStop来检查我的实现是否支持Stop()方法:

 reader.StartRead(myData);
 ....
 // some where when I need to stop reader
 IStop stoppable = reader as IStop;
 if (stoppable != null ) stoppable.Stop();
 ...
Run Code Online (Sandbox Code Playgroud)

我还是要写那些代码.有什么建议?不确定是否有任何方法可以在.Net或C#中的接口中定义可选的实现方法?

c# .net-3.5

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

使用Lambda或LINQ将类列表转换或映射到另一个类列表?

将类转换为另一个类列表的问题和答案很酷.如何将MyData列表转换为另一个MyData2列表?例如:

List<MyData> list1 = new List<MyData>();
// somewhere list1 is populated
List<MyData2> list2;
// Now I need list2 from list1. How to use similar LINQ or Lambda to get
list2 = ... ?
Run Code Online (Sandbox Code Playgroud)

在这里我尝试了这个,但我无法弄清楚完整的代码:

list2 = (from x in list1 where list1.PropertyList == null
    select new MyData2( null, x.PropertyB, x.PropertyC).
    Union (
      from y in list1 where list.PropertyList != null
      select new MyData2( /* ? how to loop each item in ProperyList */
              y.PropertyB, y.PropertyC)
    ).ToList();
Run Code Online (Sandbox Code Playgroud)

其中MyData2有一个CTOR(字符串,字符串,字符串).

c# linq lambda

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

PS:在数组列表中获取索引

我有一个字符串数组.不确定是否有简单的方法来获取首先在数组中找到的项目的索引?

# example array
$array = "A", "B", "C"
$item = "B"
# the following line gets null, any way to get its index?
$index = $array | where {$_ -eq $item} | ForEach-Object { $_.Index }
Run Code Online (Sandbox Code Playgroud)

我可以循环完成.不确定是否有其他方法?

powershell

8
推荐指数
2
解决办法
4万
查看次数

将CGRect作为属性值?

CGRect类型是结构类型.如果我想将属性定义为此类型,我应该为此类型使用assign或retain属性吗?

@interface MyClass {
  CGRect rect;
  ...
}
@property (nonatomic, assign) CGRect rect; // or retain?
Run Code Online (Sandbox Code Playgroud)

或者我必须写自己的吸气剂和二传手?

iphone objective-c

8
推荐指数
1
解决办法
8015
查看次数

通过javascript获取SVG图形的大小

要在html页面中添加svg图形,通常使用object标签将其包装为:

<object id="svgid" data="mysvg.svg" type="image/svg+xml" 
  wmode="transparent" width="100" height="100">

this browser is not able to show SVG: <a linkindex="3"
href="http://getfirefox.com">http://getfirefox.com</a> 
is free and does it!
If you use Internet Explorer, you can also get a plugin: 
<a linkindex="4" href="http://www.adobe.com/svg/viewer/install/main.html">
http://www.adobe.com/svg/viewer/install/main.html</a>

</object>
Run Code Online (Sandbox Code Playgroud)

如果您不在object标签中使用width和height属性,则svg将以完整大小显示.通常我从Open Graphics Library获取svg文件进行测试.有没有办法通过使用JavaScript获得svg的大小?或者我可以只看一下svg xml文件,找出顶级svg标签的大小?

javascript svg

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

如何使用MethodInfo.Invoke设置属性值?

我有一个具有属性Value的类,如下所示:

public class MyClass {
   public property var Value { get; set; }
   ....
}
Run Code Online (Sandbox Code Playgroud)

我想使用MethodInfo.Invoke()来设置属性值.以下是一些代码:

object o;
// use CodeDom to get instance of a dynamically built MyClass to o, codes omitted
Type type = o.GetType();
MethodInfo mi = type.GetProperty("Value");
mi.Invoke(o, new object[] {23}); // Set Value to 23?
Run Code Online (Sandbox Code Playgroud)

我现在无法访问我的工作.我的问题是如何使用23等整数值设置Value?

c# reflection

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