我的问题是我想运行一个查询来检查我使用的数据是否与数据库中已有的数据重复,例如我有一个产品代码,并希望停止多次列出相同的项目,这产品代码是主键.
我可以避免这样做:
SELECT ProductCode FROM tblProducts WHERE ProductCode = '12345'
Run Code Online (Sandbox Code Playgroud)
然后检查任何返回的记录,或者是否有更优雅的解决方案,我不介意使用这种方法,但它看起来很笨拙.这只是对我的代码的一些额外验证,因为产品的插入应该只发生一次 - 但我想要对此进行错误检查,因为由于刷新或使用后退按钮(基于Web的系统)而输入了重复项.
不知道这是P = NP型问题还是我在思考这个问题?
我的数据库是MS SQL Server 2000,如果这有帮助.
我有一个modelform,它有一个字段是一个ForeignKey值到一个模型,作为40,000行.默认模型尝试创建一个包含40,000个选项的选择框,这至少是不理想的.当这个模型在formset工厂中使用时更是如此!
在管理员中,使用" raw_id_fields
"可以很容易地避免这种情况,但似乎没有相应的模型形式.我怎样才能做到这一点?
这是我的模型:
class OpBaseForm(ModelForm):
base = forms.CharField()
class Meta:
model = OpBase
exclude = ['operation', 'routes']
extra = 0
raw_id_fields = ('base', ) #does nothing
Run Code Online (Sandbox Code Playgroud)
第一个粗体线的工作原理是没有创建庞大的笨重的选择框,但是当我尝试保存这个表单的字段集时,我得到错误:"OpBase.base"必须是"Base"实例.为了保存modelform,'base'需要是Base实例.显然,Base主键的字符串表示是不够的(至少不是自动的).我需要某种机制来将表单给出的字符串更改为Base实例.而这种机制必须在一个formset中工作.有任何想法吗?如果只能raw_id_fields
工作,那就像蛋糕一样容易.但据我所知,它只在管理员中可用.
在我的Web应用程序中,我使用PHP脚本呈现页面,然后从它们生成静态HTML文件.静态HTML将提供给用户以加快性能.HTML文件最终变得陈旧,需要删除.
我正在讨论两种编写驱逐脚本的方法.
第一个是使用单个find命令,比如
find /var/www/cache -type f -mmin +10 -exec rm \{} \;
Run Code Online (Sandbox Code Playgroud)
第二种形式是通过xargs管道,类似于
find /var/www/cache -type f -mmin +10 -print0 | xargs -0 rm
Run Code Online (Sandbox Code Playgroud)
第一个表单调用rm
它找到的每个文件,而第二个表单只将所有文件名发送到一个rm
(但文件列表可能很长).
哪种形式会更快?
在我的例子中,缓存目录在几个Web服务器之间共享,所以这一切都是通过NFS完成的,如果这个问题很重要的话.
我有一个XML文件,它有四个<resutGroups>
标记:
<resultGroups>
<subGroups>
<name> </name>
</subGroups>
<name> </name>
</resultGroups>
Run Code Online (Sandbox Code Playgroud)
每个<resultGroup>
都有几个<subGroups>
,每个<subGroups>
都有<name>
标签.
我只想选择的名称标签<resultGroups>
唯一
$(xml).find("resultGroups").each(function() {
alert( $(this).find("name").text() );
}
Run Code Online (Sandbox Code Playgroud)
当我使用上面的代码返回里面所有的名字<resultgroups>
和<subGroups>
.
我怎么只能选择一个<name>
它是在<resultGroups>
标签?
我需要指定我的类的泛型类型实现接口,并且也是引用类型.我尝试了下面的代码片段,但都没有工作
public abstract class MyClass<TMyType>
where TMyType : IMyInterface
where TMyType : class
public abstract class MyClass<TMyType>
where TMyType : class, IMyInterface
Run Code Online (Sandbox Code Playgroud)
我无法为类型指定多个where子句,是否可以执行此操作?
我有存储过程将多个用户插入到User表中.该表定义如下:
CREATE TABLE "USER"
(
"Name" VARCHAR2(50),
"Surname" VARCHAR2(50),
"Dt_Birth" DATE,
)
Run Code Online (Sandbox Code Playgroud)
插入多个用户的存储过程是:
type userType is record (
name varchar2(100),
...
);
type userList is table of userType index by binary_integer;
procedure array_insert (p_userList in userList) is
begin
forall i in p_userList.first..p_userList.last
insert into users (username) values (p_userList(i) );
end array_insert;
Run Code Online (Sandbox Code Playgroud)
如何从C#调用存储过程传递userType的userList?谢谢
从设计的角度来看,我想知道为什么.NET创建者选择System.Object.GetType()而不是System.Object.Type只读属性.
它只是一个(非常小的)设计缺陷还是存在背后的理由?任何灯都欢迎.
我需要在运行时更新.Net exe app.config文件的system.net SectionGroup中的设置.我没有在运行时对原始配置文件的写访问权限(我正在开发一个.Net dll加载项,它由我无法控制的应用程序提供的exe托管)所以我希望保存一份副本的文件,并在运行时用修改后的版本替换exe中的配置.我尝试过以下但是没有用.有什么建议?
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
NetSectionGroup netSectionGroup = config.GetSectionGroup("system.net") as NetSectionGroup;
netSectionGroup.Settings.HttpWebRequest.UseUnsafeHeaderParsing = true;
config.SaveAs(@"C:\ProgramData\test.config", ConfigurationSaveMode.Full);
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:\ProgramData\test.config");
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个junit测试来防止一段代码卡在无休止的迭代中,最终会导致StackOverflow.
所以我正在寻找一种方法来减少运行时的堆栈大小,以便Junittest更快地失败.
将max stack设置为jvm参数是不可能的,因为测试是更大的测试套件的一部分.
c# ×4
.net ×3
app-config ×1
clr ×1
database ×1
django ×1
django-forms ×1
find ×1
generics ×1
java ×1
jquery ×1
oracle ×1
perl ×1
primary-key ×1
regex ×1
runtime ×1
shell ×1
sql ×1
sql-server ×1
system.net ×1
unix ×1
xargs ×1
xml ×1