确保SQL可以重复运行而不会在后续运行中收到错误的最佳实践是什么?
例如
将现有数据导出到INSERT语句,并从头开始完全重新创建整个DB.
在创建它们之前删除表(不是最安全的事情,但是如果你知道你在做什么的话就会工作)
编辑:我正在寻找这样的东西:
IF EXISTS ( SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[foo]')
AND OBJECTPROPERTY(object_id, N'IsUserTable') = 1 )
DROP TABLE foo
Run Code Online (Sandbox Code Playgroud)
其他人是否使用这样或更好的陈述?
编辑:我喜欢Jhonny的建议:
IF OBJECT_ID('table_name') IS NOT NULL DROP TABLE table_name
Run Code Online (Sandbox Code Playgroud)
我这样做是为了添加列:
IF NOT EXISTS ( SELECT *
FROM SYSCOLUMNS sc
WHERE EXISTS ( SELECT id
FROM [dbo].[sysobjects]
WHERE NAME LIKE 'TableName'
AND sc.id = id )
AND sc.name = 'ColumnName' )
ALTER TABLE [dbo].[TableName] …
Run Code Online (Sandbox Code Playgroud) 我花了很多时间试图弄清楚如何将我的XML文件中的数据绑定到TreeView控件,但我不知道从哪里开始.我甚至尝试过将Xml数据双向绑定到代码项目上的WPF TreeView和Josh Smith的代码示例,但仍然无法理解如何开始!
我在文件"C:\ SPDependencies.xml"中有XML(如果需要我可以更改格式)!!!:
<node type="SPDependencies" Name="SPDependencies">
<node type="StoredProc" Name="SP1">
<node type="OperationType" Name="Type1">
<node type="TableName" Name="Table1"/>
<node type="TableName" Name="Table2"/>
</node>
<node type="OperationType" Name="Type2">
<node type="TableName" Name="Table1"/>
<node type="TableName" Name="Table2"/>
</node>
.....
</node>
<node type="StoredProc" Name="SP2">
<node type="OperationType" Name="Type1">
...
...
</node>
</node>
Run Code Online (Sandbox Code Playgroud)
我需要以下列格式在Treeview控件中显示它:
<SP1>
<Type1>
<Table1>
<Table2>
<Table3>
<Type2>
<Table1>
<Table2>
<Table3>
<SP2>
<Type1>
........
Run Code Online (Sandbox Code Playgroud)
谢谢,阿比.
我正在尝试使用Indy通过delphi应用程序发送包含嵌入图像的电子邮件,但不知何故它无法正常工作.
我将我发送的电子邮件的内容与从Gmail发送的电子邮件的内容进行了比较,所有内容都很好,但我可能会遗漏一些细节.
Gmail会将我的电子邮件的附件图像显示为普通附件,但它已正确设置为内联.
编辑
使用TIdMessageBuilderHtml解决了它在第一次尝试时完美的工作.
您对Google的Unladen Swallow有何看法和期望?从他们的项目计划:
我们希望让Python更快,但我们也想让大型的,成熟的应用程序轻松切换到Unladen Swallow.
- 生成Python的版本至少比CPython快5倍.
- Python应用程序性能应该稳定.
- 保持与CPython应用程序的源级兼容性.
- 保持与CPython扩展模块的源级兼容性.
- 我们不想永远维护Python实现; 我们将工作视为一个分支,而不是一个分支.
甚至更甜:
此外,我们打算删除GIL并修复Python中的多线程状态.我们相信通过实施更复杂的GC可以实现这一点
它看起来好得令人难以置信,就像最好的PyPy和Stackless一样.
更多信息:
更新:正如DNS指出的那样,有一个相关的问题:什么是LLVM以及如何用LLVM替换Python VM的速度提高5倍?
这可能与类路径问题有关,但我现在还不确定,因为我在某些机器上没有出现此错误.
堆栈顶部的错误是SAX2 driver class org.apache.crimson.parser.XMLReaderImpl not found
.为什么我只在某些环境中获得此错误,而不是其他环境?我该如何进一步调查和/或解决这个问题?
环境:
POM中的版本:
我在一个神秘的月份读到,整合需要3倍于开发单个组件所花费的时间.
你们经历了什么?
我有这个代码:
public void replay() {
long previous = DateTime.Now.Ticks;
for (int i = 0; i < 1000; i++) {
Thread.Sleep(300);
long cur = DateTime.Now.Ticks;
Console.WriteLine(cur - previous);
previous = cur;
}
}
Run Code Online (Sandbox Code Playgroud)
这被调用为一个单独的线程,如下所示:
MethodInvoker replayer = new MethodInvoker(replay);
replayer.BeginInvoke(null, null);
Run Code Online (Sandbox Code Playgroud)
但是,如果我观察输出,它的行为很奇怪.它i
成对输出.例如,它将等待一个完整的等待,然后输出i
,然后快速输出下一个i
,然后再次等待.为什么这样做,我该如何纠正呢?
它输出这个:
3125040
2968788
2968788
2968788
3125040
2968788
2968788
2968788
3125040
2968788
2968788
2968788
3125040
Run Code Online (Sandbox Code Playgroud)
如果我将睡眠时间增加到一秒以上,则不会发生这种情况.
在Windows窗体中,有时会有一个窗口从另一个窗口继承.但在WPF中,这是不允许的.为什么WPF窗口没有可视继承?
所以,我有两个主题.
线程1管理客户端连接.(只有一个客户端和一个服务器)
我称之为我的服务器线程.
线程二管理向客户端发送消息.我称之为消息处理器线程.
线程1负责,除其他外,定期向客户端发送心跳.
在编程时我假设套接字不是线程安全的,但缓冲区是,并且只要我使用单独的缓冲区用于服务器和处理器线程我就没问题了.
我还假设"PrintWriter"类似于Java中的套接字缓冲区.
在这些假设下,我写了这个函数来发送心跳:
public void sendHeartBeat(){
logger.info("Sending a hearbeat!");
PrintWriter printWriter=null;
try {
printWriter = new PrintWriter(clientSocket.getOutputStream());
} catch (IOException e) {
logger.info(e.toString());
}
if(printWriter!=null){
printWriter.print("HEARTBEAT#");
printWriter.flush();
}
}
Run Code Online (Sandbox Code Playgroud)
另一个线程,"处理器"做了类似的事情:
printWriter=new PrintWriter(theServer.getClientSocket().getOutputStream());
Run Code Online (Sandbox Code Playgroud)
通过这种方式,每次我希望发送心跳时,我都会创建一个新的"缓冲区",而且我的消息永远不会被覆盖.
不幸的是,情况似乎并非如此.我收到一条消息来自管道:dsgdsbHEARTBEAT #sdg
这会导致稍后的核心转储.
这是我的问题:
1)套接字显然不是线程安全的,但是我从它们获得的PrintWriters是否安全?或者它只是返回相同的PrintWriter?
2)什么类似于Java中的套接字缓冲区?我该如何看待这个问题?
3)如何使这些线程不写入套接字上的相同缓冲区?
我有一个使用subversion进行版本控制的设置文件.每个人都有自己的这个文件的副本,我需要这个不被提交.但是,就像我说的那样,版本控制下已有一个副本.我的问题是:如何从版本控制中删除此文件而不删除每个人的文件,然后将其添加到忽略列表中,以便它不会被提交?我正在使用linux命令行svn.