我有一个存储过程,其中有一个名为UserName的参数,在我的代码后面我有一个SqlCommand对象,我使用Add方法添加参数.但由于某些原因,当命令对象尝试运行ExecuteReader方法时,它会抛出异常.我完全不知所措,不知道为什么它没有识别参数.在运行ExecuteReader方法之前,我有一个断点设置,所以我可以确认命令对象确实包含正在设置的参数,这是真的.我知道当参数未添加到命令对象时,存储过程确实返回正确的数据,但在实际存储过程中是硬编码的.下面是catch块中给出的异常消息.我还将粘贴我的代码和存储过程的第一部分.我非常感谢在这个问题上的任何帮助,看到我尝试了许多不同的方法无济于事.提前致谢.
过程或函数'someStoredProcedure'需要参数'@UserName',这是未提供的.
private DataTable GetLossMitData(string code, DateTime? start, DateTime? end)
{
DataTable results = new DataTable();
string connectionString = ConfigurationManager.ConnectionStrings["asdf"].ConnectionString;
string userName = String.Empty;
try
{
using (SPSite site = new SPSite(ConfigurationManager.AppSettings["someName"]))
{
using (SPWeb web = site.OpenWeb())
{
userName = web.CurrentUser.Email.ToString();
}
}
using (SqlConnection connection1 = new SqlConnection(connectionString))
{
connection1.Open();
using (SqlCommand command1 = new SqlCommand("someStoredProcedure", connection1))
{
command1.Parameters.Add(new SqlParameter("@UserName", userName));
command1.Parameters.Add(new SqlParameter("@ProductCode", code));
SqlDataReader dr = command1.ExecuteReader(CommandBehavior.CloseConnection);
results.Load(dr);
}
connection1.Close();
}
}
catch (Exception ex) …Run Code Online (Sandbox Code Playgroud) 在我们的系统中,我们有一个方法,当它使用某个ID调用时会做一些工作:
public void doWork(long id) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
现在,可以针对不同的ID同时完成这项工作,但是如果使用2个线程使用相同的ID调用该方法,则一个线程应该阻塞直到它完成.
最简单的解决方案是将Map从Long ID映射到我们可以锁定的任意对象.我预见到的一个问题是,我们可以在系统中拥有大量的ID,这个地图每天都会不断增长.
理想情况下,我认为我们需要一个系统,我们每个线程都会获取一个锁定对象,在可能的情况下锁定,完成工作,然后发出信号表明我们已完成锁定.如果很明显没有其他人使用这个特定的锁,那么请从锁定图中安全地将其删除以防止内存泄漏.
我想这一定是一个很常见的场景,所以我希望有一个现有的解决方案.有人知道吗?
我用过的每一种正则表达式都一直都有"." 字符匹配除了新行(\ r或\n)之外的所有内容...当然,除非您启用单行标志.
所以,当我尝试以下C#代码时,我感到震惊:
Regex rgx = new Regex(".");
if (rgx.Match("\r\n").Success)
MessageBox.Show("There is something rotten in the state of Redmond!");
Run Code Online (Sandbox Code Playgroud)
它显示了这个消息.为了确保我不会疯狂,我尝试了以下JavaScript代码:
if (/./.test("\r\n"))
alert("Something's wrong with JavaScript too.");
Run Code Online (Sandbox Code Playgroud)
JavaScript没有显示消息,这意味着它的工作正常.
显然,"." .NET中的字符与"\ r"字符匹配.我查看了 文档,看看是否有任何关于它的内容:
通配符:匹配除\n之外的任何单个字符.
哇...因为一个正则表达式的味道什么时候点匹配一个回车?您会认为.NET的行为与其他所有正则表达式的行为一样......特别是因为它在Windows环境中使用"\ r \n"作为行分隔符.
是否有任何标志/设置可以让它像其他Regex口味一样工作?是否有任何其他解决方案不涉及替换所有.字符[^\r\n]?
问题描述:
在我们的项目中,我们有一个"生产数据库"和许多"开发人员".我们想知道如何管理和安装更改.我们已经有一些程序,但需要花费很多时间,有时会导致错误.
我们不能丢失数据 - 所以我们不能使用"丢弃表".我们只能使用"alter table".
我们实际的"db版本化程序"是这样的:
当开发人员想要在SVN上提交新版本时,他需要通过添加块来更改change_script.sql:
if ([acctual_version].version < "23")) {
--- sql script ----
updateVersionTo("23")
end if
Run Code Online (Sandbox Code Playgroud)
当我们想要升级数据库模式时,我们只需"执行"change_scripts.sql
有没有人有更好的主意?
我有一个应用程序执行SQL数据库的备份和恢复,这在本地计算机上工作正常,但是如果我对另一台机器上托管的SQL服务器运行此操作,我会收到以下错误
Microsoft.SqlServer.Management.Smo.FailedOperationException:服务器'25 .98.30.79'的备份失败.---> Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行Transact-SQL语句或批处理时发生异常.---> System.Data.SqlClient.SqlException:无法打开备份设备'C:\ Program Files\State Manager\Archive\Capture\20100217152147*product*\databases*database**database*.bak'.操作系统错误3(系统找不到指定的路径.).
这似乎是由SQL服务器尝试将此文件写入其本地驱动器引起的.由于安全限制,我无法设置可以放置备份的共享区域.
有谁知道如何将这些数据移回到调用代码的机器上?
我的代码如下.
private string Name;
private string Server;
private string dbName;
private string user;
private string password;
public Boolean performCapture(String archiveDir)
{
String destination = archiveDir + "\\" + Name;
if (!System.IO.Directory.Exists(destination))
{
System.IO.Directory.CreateDirectory(destination);
}
Server sqlServer = connect();
if (sqlServer != null)
{
DatabaseCollection dbc = sqlServer.Databases;
if (dbc.Contains(dbName))
{
Backup bkpDatabase = new Backup();
bkpDatabase.Action = BackupActionType.Database;
bkpDatabase.Database = dbName;
BackupDeviceItem bkpDevice = new BackupDeviceItem(destination + "\\" + dbName …Run Code Online (Sandbox Code Playgroud) 我试图让我的GUI线程在长时间运行操作期间保持响应.这些操作必须是同步的,因为它们通常是在请求的操作完成之前需要完成的操作.
我试图用后台工作人员,监视器和锁定对象来做这件事.本质上我想在长时间运行的进程启动之前启动一个计时器,在后台线程中启动长时间运行的进程,并等待后台工作线程表示它已经完成,然后再继续使用相关代码.如果长时间运行的过程花费的时间过长,则向用户显示"加载..."对话框,以便他们知道应用程序没有崩溃.
一个例子可能是图形包中的用户点击按钮,在我们可以绘制图像然后打印pi计算到顶部的一百万个小数位之前,必须从磁盘加载大图像.
我无法从磁盘异步加载图像,这将使UI保持响应,因为用户可以启动另一个操作,这会扰乱程序状态(即撤消操作).
我可以简单地将光标更改为沙漏并完成它,但在许多情况下我希望用户也可以取消操作 - 带有取消按钮的"正在加载..."对话会照顾这很好.
我最初的目标是使用一个锁对象,System.Threading.Monitor.Enter()以便UI线程等待长时间运行的线程完成,然后继续执行.如果计时器在长时间运行的线程完成之前触发,则UI线程仍可用于处理事件并在屏幕上绘制对话框.
我遇到的问题是,在UI线程尝试获取锁定之前,我无法让后台工作程序锁定对象.
相反,我正在使用一些非常黑盒子的第三方代码进行处理.因此,我不能将代码定制为线程友好的并报告其进度或支持取消.
我的问题
是否有任何经过验证的方式包装第三方代码,以便UI线程保持响应,如果需要,我可以显示取消对话? - 将会有许多实例,其中长时间运行的操作几乎立即完成,并且不需要显示对话框.
更进一步的澄清
我为什么要这样做?异步操作是Windows应用程序的宠儿......
好吧,我不想在启动长时间运行异步操作时锁定用户界面的每个方面,然后在完成后解锁每个方面.我可以 - 通过设置光标或物理禁用所有的删除等等,但实际上我更愿意能够简单地将调用包装在'某些对象/方法等'中,这将允许弹出一个对话框(如果仅当)操作花费足够长的时间才能影响用户.我不必担心执行流程的变化,我仍然(总体上)能够在代码中维护原子操作(不会在回调中分开)并且仍然具有"响应"UI.
我可以理解为什么到目前为止我在将BackgroundWorker/Thread制作成同步阻塞线程方面没有成功,但我确实担心我不得不while(true){ sleep() }在GUI线程中沿着路线走,而不是使用锁.
我正在尝试生成JFileChooser具有Windows外观的内容.我找不到一个方法来改变它,所以我创建了一个扩展的基类,JFileChooser用以下代码更改UI:
public FileChooser(){
this(null);
}
public FileChooser(String path){
super(path);
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) { System.err.println("Error: " + e.getMessage()); }
Run Code Online (Sandbox Code Playgroud)
然后,在另一节课中,我打电话
FileChooser chooser = new FileChooser(fileName);
int val = chooser.showOpenDialog(null);
Run Code Online (Sandbox Code Playgroud)
但是出现的对话框具有Java外观.有关如何改变这一点的任何想法?是否有一个JFileChooser类的方法,我可以使用它而不是这个扩展类?
谢谢!
我是目标c的新手,我试图了解如何/何时调用autorelease.我理解简单的用例:
- (void) foo {
Bar *b = [[[Bar alloc] init] autorelease];
[self doSomething:b];
}
Run Code Online (Sandbox Code Playgroud)
下一个案例怎么样 - 这是一个错误,因为该对象将在离开makeBar范围后立即释放?
-(Bar*) makeBar
{
return [[[Bar alloc] init] autorelease];
}
Run Code Online (Sandbox Code Playgroud)
如果来电者保留怎么办?
Bar *b = [[self makeBar] retain];
Run Code Online (Sandbox Code Playgroud)
谢谢,-Eric
我正在使用Forms身份验证,我想利用角色,我可以以某种方式设置没有成员资格的用户角色吗?
如果我有两种类型的模型,每种模型互相引用,那么我首先尝试定义的模型说它不能识别引用的其他类型(因为它在文件中进一步定义).例如:
class Author(db.Model):
most_recent_book = db.ReferenceProperty(Book)
class Book(db.Model):
author = db.ReferenceProperty(Author)
Run Code Online (Sandbox Code Playgroud)
这将声称无法识别引用的"Book"模型.如果我翻转订单,我会遇到同样的问题(除非它会说"作者"无法识别).我该如何解决这个问题?
.net ×3
c# ×3
java ×2
sql ×2
ado.net ×1
asp.net ×1
asp.net-mvc ×1
autorelease ×1
concurrency ×1
jfilechooser ×1
locking ×1
objective-c ×1
regex ×1
smo ×1
sql-server ×1
versioning ×1