我无法决定在将数据插入数据库之前格式化数据,还是将其拉出时更好.
我不是在谈论数据清理; 我们都知道要防止SQL注入.我说的是,如果用户给你一个URL,并且它前面没有http://,你应该在插入数据库之前添加它还是将它拉出来?那些更复杂的事情,比如格式化一大堆文本.我想在之前或之后使用HTML标记(或将其删除)吗?如果我稍后改变主意并希望以不同方式格式化,该怎么办?如果我已经格式化它,我不能这样做,但是如果我将它存储为未格式化的话我就可以...但是每次我从数据库中提取一些数据时我都会做额外的工作,我可以完成一次并完成它.
你的想法是什么?
从答案中,似乎普遍认为URL,电话号码和电子邮件(任何具有明确定义格式的内容)之类的内容应首先标准化为一致的格式.像文本这样的东西通常应该是原始的或可操作的格式,以获得最大的灵活性.如果速度是个问题,则可以存储两种格式.
找到所有外部依赖项很容易.只需运行程序并打开模块信息窗口即可.但是我怎样才能找到所有内部依赖项?我知道程序会保留所有单元的列表,因为我已经在初始化代码中跟踪了一两次.但有没有简单的方法从调试器访问此列表?
在OOP中,组合(由UML中的填充菱形表示)与类之间的关联(由UML中的空菱形表示)之间的区别是什么.我有点困惑.什么是聚合?我能有一个令人信服的现实世界的例子吗?
除了解释之外,javascript中的$是什么意思?这是代码:
var ZebraTable = {
bgcolor: '',
classname: '',
stripe: function(el) {
if (!$(el)) return;
var rows = $(el).getElementsByTagName('tr');
for (var i=1,len=rows.length;i<len;i++) {
if (i % 2 == 0) rows[i].className = 'alt';
Event.add(rows[i],'mouseover',function() {
ZebraTable.mouseover(this); });
Event.add(rows[i],'mouseout',function() { ZebraTable.mouseout(this); });
}
},
mouseover: function(row) {
this.bgcolor = row.style.backgroundColor;
this.classname = row.className;
addClassName(row,'over');
},
mouseout: function(row) {
removeClassName(row,'over');
addClassName(row,this.classname);
row.style.backgroundColor = this.bgcolor;
}
}
window.onload = function() {
ZebraTable.stripe('mytable');
}
Run Code Online (Sandbox Code Playgroud)
这是我获取代码的链接,您可以在页面上查看演示.它似乎没有使用任何框架.我实际上正在阅读一个JQuery教程,该教程使用了这段代码并在其上使用JQuery来进行表格条带化.链接在这里:
http://v3.thewatchmakerproject.com/journal/309/stripe-your-tables-the-oo-way
我正在使用Selenium和Firefox.
我在页面上有一个链接(比如linkA),它在新标签页中打开一个新页面.单击linkA时会显示新选项卡.然后我想与新页面进行交互.
这是我的selenium脚本:
Selenium无法识别新标签.它报告:
[warn] Link的目标是'_blank',Selenium不支持!将目标随机化为:selenium_blank24003
有没有办法告诉Selenium与显示的标签进行交互?
假设我的主体中有一个存储过程:
EXEC 'INSERT INTO ' + quotename(@table) ' blah...'
SELECT IDENT_CURRENT('' + @table + '')
Run Code Online (Sandbox Code Playgroud)
IDENT_CURRENT()是否保证在EXEC中获得该行的标识?IDENT_CURRENT()"返回在任何会话和任何范围内为特定表生成的最后一个标识值",但EXEC中的范围与存储过程不同,对吧?
我想确保如果一次多次调用存储过程,则选择正确的标识.
编辑:或者我需要在EXEC中同时执行INSERT和SELECT,如下所示:
declare @insert nvarchar
set @insert =
'INSERT INTO ' + quotename(@table) ' blah...' +
'SELECT IDENT_CURRENT(''' + @table + ''')'
EXEC @insert
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,如果我想在T-SQL中继续使用更多代码,如何选择EXEC的结果?像这样(虽然它显然不正确):
declare @insert nvarchar
set @insert =
'INSERT INTO ' + quotename(@table) ' blah...' +
'SELECT IDENT_CURRENT(''' + @table + ''')'
declare @ident int
set @ident = EXEC @insert
-- more code
SELECT * FROM blah
Run Code Online (Sandbox Code Playgroud)
更新:在第一个片段中,如果我SELECT SCOPE_IDENTITY()而不是使用IDENT_CURRENT(),则SELECT返回NULL.:(
将非泛型集合转换为泛型集合的最佳方法是什么?LINQ有办法吗?
我有以下代码.
public class NonGenericCollection:CollectionBase
{
public void Add(TestClass a)
{
List.Add(a);
}
}
public class ConvertTest
{
public static List<TestClass> ConvertToGenericClass( NonGenericCollection collection)
{
// Ask for help here.
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我上次采访时遇到的一个问题:
设计一个函数
f,这样:Run Code Online (Sandbox Code Playgroud)f(f(n)) == -n哪里
n是32位有符号整数 ; 你不能使用复数运算.如果您无法为整个数字范围设计此类功能,请将其设计为可能的最大范围.
有任何想法吗?
我正在寻找一种以幂等方式编写postgreSQL架构更改脚本的方法.
在MSSQL中,我可以这样做:
if(not exists(select * from information_schema.columns where table_name = 'x' and column_name = 'y'))
begin
alter table x add y int
end
go
Run Code Online (Sandbox Code Playgroud)
PostgreSQL似乎不允许ad-hoc pl/pgsql与MSSQL使用T-SQL的方式相同,所以我不能在SQL脚本中使用控制结构并使用psql -f x.sql运行它.
我知道如果对象已经存在,PostgreSQL将抛出一个错误,但我不想忽略错误.
我可以使用一些模式版本控制技术,如dbdeploy,但我真的很喜欢通过psql运行一组文件的简单性,而不会产生任何不必要的副作用.
这可能吗?
谢谢,马克
我有两个具有以下关联的类:
class Incident
has_one :assignee
has_one :technician
class User
has_many :incidents
Run Code Online (Sandbox Code Playgroud)
请注意,受理人和技术人员字段引用User类型的对象.这些关系应该如何在模型中?
database ×2
associations ×1
c# ×1
debugging ×1
delphi ×1
enumerator ×1
formatting ×1
generics ×1
identity ×1
integer ×1
javascript ×1
jquery ×1
math ×1
oop ×1
plpgsql ×1
postgresql ×1
scope ×1
selenium ×1
sql ×1
t-sql ×1