问题列表 - 第21549页

SQL Query表示未提供参数,但会将其添加到SqlCommand对象中

我有一个存储过程,其中有一个名为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)

.net c# sql ado.net

22
推荐指数
2
解决办法
2万
查看次数

Java:在原语上同步?

在我们的系统中,我们有一个方法,当它使用某个ID调用时会做一些工作:

public void doWork(long id) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

现在,可以针对不同的ID同时完成这项工作,但是如果使用2个线程使用相同的ID调用该方法,则一个线程应该阻塞直到它完成.

最简单的解决方案是将Map从Long ID映射到我们可以锁定的任意对象.我预见到的一个问题是,我们可以在系统中拥有大量的ID,这个地图每天都会不断增长.

理想情况下,我认为我们需要一个系统,我们每个线程都会获取一个锁定对象,在可能的情况下锁定,完成工作,然后发出信号表明我们已完成锁定.如果很明显没有其他人使用这个特定的锁,那么请从锁定图中安全地将其删除以防止内存泄漏.

我想这一定是一个很常见的场景,所以我希望有一个现有的解决方案.有人知道吗?

java concurrency

16
推荐指数
3
解决办法
8265
查看次数

.NET Regex点字符匹配回车符?

我用过的每一种正则表达式都一直都有"." 字符匹配除了新行(\ 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]

.net regex

14
推荐指数
1
解决办法
8306
查看次数

寻找数据库版本控制的解决方案

问题描述:

在我们的项目中,我们有一个"生产数据库"和许多"开发人员".我们想知道如何管理和安装更改.我们已经有一些程序,但需要花费很多时间,有时会导致错误.

我们不能丢失数据 - 所以我们不能使用"丢弃表".我们只能使用"alter table".

我们实际的"db版本化程序"是这样的:

  • 我们有一个名为[actual_version]的表,其中包含已安装的db模式的实际版本
  • 我们有一个名为"changes_script.sql"的文件,其中包含所有数据库更改 - 此文件存储在SVN上

当开发人员想要在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-server versioning

10
推荐指数
2
解决办法
2269
查看次数

C#SMO备份远程数据库到本地机器

我有一个应用程序执行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)

c# sql smo

11
推荐指数
1
解决办法
9816
查看次数

.NET线程与锁定和等待

我试图让我的GUI线程在长时间运行操作期间保持响应.这些操作必须是同步的,因为它们通常是在请求的操作完成之前需要完成的操作.

我试图用后台工作人员,监视器和锁定对象来做这件事.本质上我想在长时间运行的进程启动之前启动一个计时器,在后台线程中启动长时间运行的进程,并等待后台工作线程表示它已经完成,然后再继续使用相关代码.如果长时间运行的过程花费的时间过长,则向用户显示"加载..."对话框,以便他们知道应用程序没有崩溃.

一个例子可能是图形包中的用户点击按钮,在我们可以绘制图像然后打印pi计算到顶部的一百万个小数位之前,必须从磁盘加载大图像.

我无法从磁盘异步加载图像,这将使UI保持响应,因为用户可以启动另一个操作,这会扰乱程序状态(即撤消操作).

可以简单地将光标更改为沙漏并完成它,但在许多情况下我希望用户也可以取消操作 - 带有取消按钮的"正在加载..."对话会照顾这很好.


我最初的目标是使用一个锁对象,System.Threading.Monitor.Enter()以便UI线程等待长时间运行的线程完成,然后继续执行.如果计时器在长时间运行的线程完成之前触发,则UI线程仍可用于处理事件并在屏幕上绘制对话框.

我遇到的问题是,在UI线程尝试获取锁定之前,我无法让后台工作程序锁定对象.

相反,我正在使用一些非常黑盒子的第三方代码进行处理.因此,我不能将代码定制为线程友好的并报告其进度或支持取消.


我的问题

是否有任何经过验证的方式包装第三方代码,以便UI线程保持响应,如果需要,我可以显示取消对话? - 将会有许多实例,其中长时间运行的操作几乎立即完成,并且不需要显示对话框.


更进一步的澄清

我为什么要这样做?异步操作是Windows应用程序的宠儿......

好吧,我不想在启动长时间运行异步操作时锁定用户界面的每个方面,然后在完成后解锁每个方面.我可以 - 通过设置光标或物理禁用所有的删除等等,但实际上我更愿意能够简单地将调用包装在'某些对象/方法等'中,这将允许弹出一个对话框(如果仅当)操作花费足够长的时间才能影响用户.我不必担心执行流程的变化,我仍然(总体上)能够在代码中维护原子操作(不会在回调中分开)并且仍然具有"响应"UI.

我可以理解为什么到目前为止我在将BackgroundWorker/Thread制作成同步阻塞线程方面没有成功,但我确实担心我不得不while(true){ sleep() }在GUI线程中沿着路线走,而不是使用锁.

.net c# multithreading locking

4
推荐指数
1
解决办法
2465
查看次数

JFileChooser的Windows外观

我正在尝试生成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类的方法,我可以使用它而不是这个扩展类?

谢谢!

java jfilechooser look-and-feel

9
推荐指数
2
解决办法
3万
查看次数

返回自动释放目标c中的错误吗?

我是目标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

memory-management objective-c autorelease

7
推荐指数
2
解决办法
3166
查看次数

我可以在不使用会员资格的情况下使用user.IsInRole吗?

我正在使用Forms身份验证,我想利用角色,我可以以某种方式设置没有成员资格的用户角色吗?

asp.net asp.net-mvc

3
推荐指数
1
解决办法
7128
查看次数

在Google App Engine中,如何在两个相互引用的实体之间使用引用属性?

如果我有两种类型的模型,每种模型互相引用,那么我首先尝试定义的模型说它不能识别引用的其他类型(因为它在文件中进一步定义).例如:

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"模型.如果我翻转订单,我会遇到同样的问题(除非它会说"作者"无法识别).我该如何解决这个问题?

google-app-engine referenceproperty

9
推荐指数
1
解决办法
1496
查看次数