我正在使用SQLdatareader从数据库构建POCO.代码工作,除非它在数据库中遇到空值.例如,如果数据库中的FirstName列包含空值,则抛出异常.
employee.FirstName = sqlreader.GetString(indexFirstName);
Run Code Online (Sandbox Code Playgroud)
在这种情况下处理空值的最佳方法是什么?
我计划使用简单的数据库查询创建我的Web应用程序的无序用户列表,但后来计划让人们通过在文本输入中键入他们正在寻找的人名来过滤此列表.
我希望使用jQuery将输入框中的字符串与列表项中的任何一个匹配,然后隐藏其他项,可能是通过动态地将新类应用于包含匹配字符串的类,并隐藏所有其他类不包含该类.
有谁知道这样做的好方法?
我记得在某个地方听过或读过
SELECT * from TABLE where date >= '2009-01-01' AND date <= '2009-12-31'
Run Code Online (Sandbox Code Playgroud)
效率比
SELECT * from TABLE where date BETWEEN '2009-01-01' AND '2009-12-31'
Run Code Online (Sandbox Code Playgroud)
其中date列是DATETIME类型且具有相同的索引.它是否正确?
我有一个数据库,其中包含一个活动订单表和一个非活动订单.我想在Entity Framework中将其建模为一个名为Orders的实体.我还需要一种方法来确定此集合中的订单是否处于活动状态,最好是通过在实体上设置状态属性,该属性是根据它所在的表设置的.无论如何使用实体框架1来执行此操作.在实体框架4中?
我有以下代码:
TYPES = {'hotmail':{'type':'hotmail', 'lookup':'mixed', 'dkim': 'no', 'signatures':['|S|Return-Path: postmaster@hotmail.com','|R|^Return-Path:\s*[^@]+@(?:hot|msn)','^Received: from .*hotmail.com$']},
'gmail':{'type':'gmail', 'lookup':'mixed', 'dkim': 'yes', 'signatures':['|S|Subject: unsubscribe','','','']}
}
for type_key, type in TYPES.iteritems():
for sub_type_key, sub_type in type.iteritems():
for sig in sub_type['signatures']:
if ("|S|" in sig):
#String based matching
clean_sig = sig[3:len(sig)]
if (clean_sig in file_contents):
sig_match += 1
elif ("|R|" in sig):
clean_sig = sig[3:len(sig)]
#REGMATCH later
if (sig_match == sig.count):
return sub_type['type']
return None
Run Code Online (Sandbox Code Playgroud)
但是,它会生成错误:
for sig in sub_type['signatures']:
TypeError: string indices must be integers, not str
Run Code Online (Sandbox Code Playgroud)
我假设它会看到列表从字典元素中拉出来,并允许我循环它? …
我已经在ASP.NET/C#Web应用程序上工作了一段时间,它的大小已经变得很大,因为它是如何被编程的.它变得非常难以维持并且变得越来越难,过去需要1小时更新的东西现在需要大约3-4小时.
我相信重新设计应用程序以使用不同的层将有助于解决许多这些问题.然而,我读的越多,似乎每个人都以不同的方式做到这一点,但实现了大致相同的目标.
我已经看过诸如Presentation/UI,DB,Business,Services等层.似乎3层可能是最好的,但我不确定.
我应该在Web应用程序中拥有哪些层以及每个应包含或限制的内容?
以前的经验中的单词非常受欢迎.
我一直认为DataTable会消耗比通用List更多的内存.我正在测试加载DataTable并从SQL Server查询加载List.在这种情况下,DataTable消耗的内存较少.我得到了前2000行,每行有134个字段.一个二进制字段,其余为标准varchar,int,bit等.
在这个世界上,如果DataTable的所有开销都比List少,那么它的内存消耗量是多少?GC使用DataTable报告大约4mb,使用列表报告5mb.
我测试了一些NorthWind表,在这些情况下列表略小.
private void GetMemory()
{
label1.Text = string.Format("{0:0.00} MB", GC.GetTotalMemory(true) / 1024.0 / 1024.0);
}
private void DataTableButton_Click(object sender, EventArgs e)
{
var conn = new SqlConnection(@"Initial Catalog=ADatabase;Data Source=AServer;Integrated Security=True");
conn.Open();
var cmd = new SqlCommand("SELECT TOP 2000 * FROM AManyColumnedTable", conn);
var r = cmd.ExecuteReader();
_rows = new List<object[]>();
//uses more memory
object[] a = null;
while (r.Read())
{
a = new object[r.FieldCount];
r.GetValues(a);
_rows.Add(a);
}
//uses less memory
//_table = new DataTable("TheTable");
//_table.Load(r);
r.Close();
conn.Close(); …Run Code Online (Sandbox Code Playgroud) 我有一个从Panel创建的全局Graphics对象.定期从磁盘中拾取图像并使用Graphics.DrawImage()将其绘制到面板中.它适用于几次迭代,然后我得到以下有用的例外:
System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.
at System.Drawing.Graphics.CheckErrorStatus(Int32 status)
at System.Drawing.Graphics.DrawImage(Image image, Int32 x, Int32 y)
at System.Drawing.Graphics.DrawImage(Image image, Point point)
Run Code Online (Sandbox Code Playgroud)
当我完成它时处理图像对象时,我排除了内存泄漏.我知道图像没有损坏,并且可以正常读取,因为程序在面板停止显示之前执行了一段时间.
我在使用PictureBox时遇到了同样的问题,但这次至少我得到了一个错误而不是什么.
我检查了任务管理器中的GDI对象和USER对象,但是当应用程序正常工作时,它们总是大约有65个用户对象和165个GDI对象.
我确实需要尽快解决这个问题,并不是说我可以在.NET系统库中保留断点并查看确切执行失败的位置.
提前致谢.
编辑:这是显示代码:
private void DrawImage(Image image)
{
Point leftCorner = new Point((this.Bounds.Width / 2) - (image.Width / 2), (this.Bounds.Height / 2) - (image.Height / 2));
_graphics.DrawImage(image, leftCorner);
}
Run Code Online (Sandbox Code Playgroud)
图像加载代码:
private void LoadImage(string filename, ref Image image)
{
MemoryStream memoryStream = DecryptImageBinary(Settings.Default.ImagePath + filename, _cryptPassword);
image = Image.FromStream(memoryStream);
memoryStream.Close();
memoryStream.Dispose();
memoryStream = null; …Run Code Online (Sandbox Code Playgroud) 我有一个需要支持拖放的自定义应用程序.在我的应用程序中拖动网格时,在其DoDragDrop方法中,我提供了要以序列化格式删除的对象.
当丢弃到我的某个应用程序时,它可以取消选择字符串并创建对象.
我想要做的是允许源应用程序也能够放入NotePad/TextPad.我可以看到我可以将文件从Windows资源管理器拖放到记事本,但是无法将纯文本拖放到NotePad.猜猜它检查DragEnter事件中的DataFormat并禁止字符串,但允许将文件放入其中.
提前致谢!