我有一个使用Windows身份验证的Sql Server.
我想从Delphi应用程序连接到服务器.
默认情况下,SQL Server将采用启动连接过程的用户凭据.
这意味着要更改登录,我目前有两个选择:
注销并以所需用户身份登录,然后运行我的应用程序
使用RUNAS命令从命令行启动程序.
我想让用户在应用程序中提供凭据,并以该用户身份登录.这可能是通过操作ConnectionString还是以编程方式更改当前进程的用户来实现的?
我发现的最接近的是此条目,它告诉我如何在特定凭据下启动另一个进程.我可以使用该技术创建一个"启动器"程序,在从用户收集凭据后启动连接过程,但我真的想要更清洁的东西.
我正在使用Delphi 2010来完成这个项目.
谢谢
我一直收到这个错误 -
错误C2819:类型'List'没有重载成员'operator - >'
我无法弄清楚为什么?救命?
Main.cpp -
#include <iostream>
#include <string>
#include <cassert>
using namespace std;
#include "List.h"
#include "Node.h"
Run Code Online (Sandbox Code Playgroud)
错误发生在这里:
void PrintList ( List list ) {
Node * temp = list.getFirst();
Node * temp2 = list->getLast();
while ( temp->getItemName() != temp2->getName() ) {
cout << temp.getItemName() << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
List.h -
#ifndef LIST_H
#define LIST_H
#include "Node.h"
class List
{
private:
Node * First;
Node * Last;
int num_in_list;
public:
List () { num_in_list = 0; …
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码,其中每个键具有相同的值:
IDictionary<string, string> quarterbackDictionary = new Dictionary<string, string>();
quarterbackDictionary.Add("Manning", "Manning");
quarterbackDictionary.Add("Brady", "Brady");
quarterbackDictionary.Add("Rivers", "Rivers");
Run Code Online (Sandbox Code Playgroud)
我的问题:
- 我可以删除冗余,这样我就不必重复每个字符串两次,类似于以下内容:
IDictionary<string, string> quarterbackDictionary = new Dictionary<string, string>();
quarterbackDictionary.Add("Manning");
quarterbackDictionary.Add("Brady");
quarterbackDictionary.Add("Rivers");
Run Code Online (Sandbox Code Playgroud)
供参考:
问:我想了解在同一模块文件中定义多个行为的优缺点.
例如
-module(someapp_sup).
-behavior(supervisor).
-behavior(application).
Run Code Online (Sandbox Code Playgroud)
使用这种布局,我可以保存模块文件,同时在可维护性方面没有太多损失(整个应用程序启动someapp_sup:start()
).
我通常用以下方式在Java中创建一个String:
String foo = "123456";
但是,我的讲师坚持要求我使用该format
方法形成一个String ,如下所示:
String foo = String.format("%s", 123456);
要快得多.
此外,他说使用StringBuilder类更快.
StringBuilder sb = new StringBuilder(); String foo = sb.append(String.format("%s", 123456)).toString();
创建String的最快方法是哪一个,如果有的话?
它们不可能100%准确,因为我可能不完全记得它们.
我有一个文件(mapViewController.m),它在svn中,但我不能提交更改.我试图将文件复制到别处,然后更新.该文件没有附带更新,所以我将其复制回来.然后我无法对其进行更改.
这很难解释什么是错的......因为我不知道.
如何删除许多其他表引用的行,作为主键还是外键?
我是否需要以适当的顺序删除每个引用,或者是否有"自动"方式来执行此操作,例如,linq to sql?
我有一个函数包含对我的一个套接字类型的调用.如果有错误,我希望能够打印警告并重试.在警告中,我想要方法名称.但是,它被宣布为lambda.这甚至可能吗?
我如何调用该函数(假设在函数myMain中):
SafeSocketCommand(() => this.mySocket.ReadCurrentBuffer());
Run Code Online (Sandbox Code Playgroud)
基本包装功能:
protected TResult SafeSocketCommand<TResult>(Func<TResult> socketCommand)
{
TResult retValue = default(TResult);
try
{
retValue = socketCommand();
}
catch (PacketLost)
{
ReportToLogs("Timeout on command '" + socketCommand.Method.Name);
}
return retValue;
}
Run Code Online (Sandbox Code Playgroud)
但socketCommand.Method.Name为我提供了调用方法(来自Stack Trace?)'<myMain> b__3',我希望socketCommand(mySocket.ReadCurrentBuffer)调用实际函数.是否可以在任何地方获取此信息,或者由于在lambda中声明而丢失?
编辑:
我应该提到我使用这个特定的调用约定,以便我可以使用各种签名的基于套接字的命令.
int i = SafeSocketCommand(() => this.mySocket.FunctionReturnsInt())
bool b = SafeSocketCommand(() => this.mySocket.FunctionReturnsBool(string s))
object o = SafeSocketCommand(() => this.mySocket.Complicated(string s, int i, bool b))
Run Code Online (Sandbox Code Playgroud)
它还通过重载处理没有返回类型的签名:
protected void SafeSocketCommand(Action socketCommand)
{
SafeSocketCommand(() => { socketCommand(); return 0; });
}
Run Code Online (Sandbox Code Playgroud) .net ×2
c# ×2
sql-server ×2
c#-3.0 ×1
c++ ×1
class ×1
cocoa ×1
cocoa-touch ×1
delete-row ×1
delphi ×1
dictionary ×1
erlang ×1
java ×1
lambda ×1
null ×1
objective-c ×1
pointers ×1
string ×1
svn ×1