我正在尝试从单个表中选择一个列(没有连接),我需要计算行数,理想情况是在开始检索行之前.我已经提出了两种方法来提供我需要的信息.
方法1:
SELECT COUNT( my_table.my_col ) AS row_count
FROM my_table
WHERE my_table.foo = 'bar'
Run Code Online (Sandbox Code Playgroud)
然后
SELECT my_table.my_col
FROM my_table
WHERE my_table.foo = 'bar'
Run Code Online (Sandbox Code Playgroud)
或方法2
SELECT my_table.my_col, ( SELECT COUNT ( my_table.my_col )
FROM my_table
WHERE my_table.foo = 'bar' ) AS row_count
FROM my_table
WHERE my_table.foo = 'bar'
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我的SQL驱动程序(SQL Native Client 9.0)不允许我在SELECT语句中使用SQLRowCount,但我需要知道结果中的行数,以便在为其分配数据之前分配数组.遗憾的是,在我的程序的这个方面,使用动态分配的容器不是一个选项.
我担心可能会出现以下情况:
方法2是否禁止此问题?
此外,两种方法中的一种会更快吗?如果是这样,哪个?
最后,是否有一个更好的方法我应该考虑(也许是一种方法来指示驱动程序使用SQLRowCount返回SELECT结果中的行数?)
对于那些问的人,我使用的是Native C++和上面提到的SQL驱动程序(由Microsoft提供).
我正在尝试使用System.DirectoryServices.AccountManagment确定用户是否是给定组的成员.
我可以实例化PrincipalContext如下:
PrincipalContext pc = new PrincipalContext(ContextType.Domain)
接下来,我试着抓住一个校长:
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
{
GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, "MYDOMAIN\somegroup");
// snip: exception thrown by line above.
}
Run Code Online (Sandbox Code Playgroud)
以上和UserPrincipal.FindByIdentity用户SAM都抛出DirectoryServicesCOMException:"登录失败:未知用户名或密码错误"
我已经尝试将完整的SAMAccountName传递给FindByIdentity(以MYDOMAIN \用户名的形式)或只是用户名而行为没有变化.我已尝试使用其他凭据HostingEnvironment.Impersonate和SPSecurity.RunWithElevatedPrivileges方法执行代码,并且也会遇到相同的结果.
我还尝试使用域名实例化我的上下文:
Principal Context pc = new PrincipalContext(ContextType.Domain, "MYDOMAIN");
这引发了PrincipalServerDownException:"无法联系到服务器."
我正在研究一台相当硬化的服务器.我没有锁定系统,所以我不确定它到底做了什么.如果我需要为我的池标识用户或域安全策略分配凭据以使这些凭据有效,我可以相应地配置域.是否有任何设置会阻止我的代码运行?我在代码本身中遗漏了什么吗?这在SharePoint网站中是不可能的吗?
编辑:经过进一步测试,我的代码在面向.NET 4.0的控制台应用程序中测试时正常运行.我针对不同的框架,因为在针对.NET 3.5出于某种原因我没有在控制台应用程序中使用AccountManagement.
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
using (UserPrincipal adUser = UserPrincipal.FindByIdentity(pc, "MYDOMAIN\joe.user"))
using (GroupPrincipal adGroup …Run Code Online (Sandbox Code Playgroud) 我正在搞乱缓冲区溢出,特别是返回到libc类.
我有以下易受攻击的代码:
#include<stdio.h>
#include<string.h>
main( int argc, char **argv)
{
char buffer[80];
getchar();
strcpy(buffer, argv[1]);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
我用gcc-2.95(no -fstack-protector)用-mpreferred-stack-boundary=2旗子编译它.我跟着回到了"黑客:剥削的艺术"的 libc章节.
首先,我禁用了ASLR:
$ cat /proc/sys/kernel/randomize_va_space
0
Run Code Online (Sandbox Code Playgroud)
我发现了以下地址system:
$ cat find_system.c
int main() {
system("");
return 0;
}
$ gdb -q find_system
Reading symbols from /home/bob/return_to_libc/find_system...(no debugging symbols found)...done.
(gdb) break main
Breakpoint 1 at 0x8048416
(gdb) run
Starting program: /home/bob/return_to_libc/find_system
Breakpoint 1, 0x08048416 in main ()
(gdb) p system
$1 = {<text variable, no …Run Code Online (Sandbox Code Playgroud) 我正在使用一个C++应用程序,它使用SQL Native Client 9.0与SQL Server 2000数据库进行通信.
Connection1工作的查询TableAConnection2工作的查询TableBTableB在该key_id字段中有一个外键约束TableA我构造了执行以下操作的函数:
begin a transaction on Connection1 & Connection2
prepare a query in TableA on Connection1
prepare a query on TableB on Connection2
begin loop over some_data
(1) insert into key_id on TableA
begin loop over some_other_data
(2) insert into TableB using same key_id as in Table A
end loop
end loop
commit on Connection1
commit on Connection2 …Run Code Online (Sandbox Code Playgroud)