小编fra*_*Xis的帖子

为什么我不能将记录插入到我的SQL Compact 3.5数据库中?

我刚刚使用MSDN的文档制作了一个非常简单的测试应用程序.我想要做的就是在我的VS 2010应用程序的SQL Server Compact数据库中的表中插入一条记录.

但是当我运行它时,它表现得很好(没有错误),但是当我从服务器资源管理器中查看表数据时,记录永远不会插入到我的SQL Compact 3.5数据库中.

我的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlServerCe;

namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        SqlCeConnection conn = null;

        try
        {
            conn = new SqlCeConnection("Data Source = test.sdf; Password ='pass'");
            conn.Open();
            SqlCeCommand cmd = conn.CreateCommand();
            cmd.CommandText = "INSERT INTO TEST ([test]) Values('NWIND')";

            cmd.ExecuteNonQuery();
        }
        finally
        {
            conn.Close();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

}

我有一个名为test.sdf的数据库.它包含一个表"test",其中包含1列"test".

我的示例测试应用程序位于:http: //dl.dropbox.com/u/3051071/ConsoleApplication1.zip

我已经测试了我的test.sdf数据库的数据库连接,并且测试正常.

我无法想象为什么我无法在我的桌子中插入记录.每当我在执行后查看我的数据时,我的表中的值始终为null.

有人可以告诉我这里我做错了什么吗?

谢谢.

c# sql-server sql-server-ce

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

c#HTTP POST - 需要跟踪发布/上传进度

我的代码可以很好地将文件POST到预先签名的Amazon S3网址.

但是,我想跟踪大文件的POST /上传进度.有没有一种简单的方法将其添加到我的代码中?我该怎么办?

我不需要进度条,只需要输出到控制台,文件传输的百分比是完整的,例如:

1
2
3

WebRequest request = WebRequest.Create(PUT_URL_FINAL[0]);
//PUT_URL_FINAL IS THE PRE-SIGNED AMAZON S3 URL THAT I AM SENDING THE FILE TO

request.Timeout = 360000; //6 minutes

request.Method = "PUT";

//result3 is the filename that I am sending                                     
request.ContentType = MimeType(result3)

byte[] byteArray =
    File.ReadAllBytes(result3);

request.ContentLength = byteArray.Length;

Stream dataStream = request.GetRequestStream();

dataStream.Write(byteArray, 0, byteArray.Length); 

dataStream.Close();

//This will return "OK" if successful.
WebResponse response = request.GetResponse();
Console.WriteLine("++ HttpWebResponse: " +
                  ((HttpWebResponse)response).StatusDescription);
Run Code Online (Sandbox Code Playgroud)

c# post http

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

当字符串中有反斜杠时IndexOf失败 - 为什么?

当字符串中有反斜杠"\"时,为什么IndexOf会失败?

string tmpString = "acg2xs5d.dui";

string tmpString2 = @"c:\acg2xs5d.dui"; 

MessageBox.Show(tmpString.IndexOf(@tmpString2).ToString());
Run Code Online (Sandbox Code Playgroud)


这返回-1; 无论.

如果我将tmpString2更改为"acg2xs5d.dui"并删除"c:\",它将按预期返回0.

似乎"\"导致它给出错误的结果"-1".

为什么会这样,我该如何解决/陷阱呢?

c# string

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

为什么Process.WaitForExit阻止,即使我在一个单独的线程中有它?

C#3.5 Winforms app.

我有一个计时器,它在单独的线程上每30秒触发一次(它只是将一串文本写入VS输出窗口).

我还有另一个线程,如果它启动等待某个进程结束.例如winword.exe.

在那个帖子中我有这个代码:

p.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

它会坐在那里等待winword.exe退出.这很好.

然而,当它坐在那里等待winword.exe退出时,一个完全独立的线程(将文本发送到输出窗口)上的30秒计时器永远不会运行.

如果我等待3分钟(所以另一个计时器此时应该运行6次,但是在WaitForExit()等待的时候没有),然后我退出winword.exe; 我的其他计时器突然开始运行6次.这就像有计时器事件的积压和突然的.NET想要在同一时间运行它.

为什么p.WaitForExit()似乎阻止了我的整个应用程序,即使我从我的应用程序中的一个单独的线程(不是主UI线程)执行它?

编辑:是的,它在一个单独的线程中.这是我用来启动它的代码:

        try
        {
            Thread t = new Thread(ProcessCheck); // Kick off a new thread
            t.Start();

            ConfigLogger.Instance.LogInfo("++ ProcessCheck thread started @ " + DateTime.Now);
        }
        catch (Exception ipwse)
        {
            ConfigLogger.Instance.LogInfo(ipwse.Message + " " + ipwse.StackTrace);
        }
Run Code Online (Sandbox Code Playgroud)



这是我的ProcessCheck()方法:

foreach (Process p in System.Diagnostics.Process.GetProcessesByName("winword"))
{
    this.Invoke(new MethodInvoker(delegate()
    {                                                                                 
        try
        {
            p.WaitForExit();
        }
        catch (Exception)
        {

        }
    }));
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading process winforms

2
推荐指数
1
解决办法
2831
查看次数

使用通配符类型搜索查找和替换字符串的一部分

我希望能够读取文件,并替换以下所有实例:

带S1800的M9S1800.2(我想摆脱M9和.2).

我遇到的问题是"S"之后的4位数字每次都可能不同,以及小数点后的数字.

例如,

它可以是:M9S3200.1或M9S5400.1或M9S5400.2

有人可以告诉我如何用C#做到这一点?

我知道如何使用此代码查找和替换:

StreamReader reader = new StreamReader(fDialog.FileName.ToString());
string content = reader.ReadToEnd();
reader.Close();

content = Regex.Replace(content, "M2", "M3");
Run Code Online (Sandbox Code Playgroud)

但是使用M9S3200.1,我想做一个通配符类型替换.例如,将M9S*.1替换为S*,因此M9S3200.1将成为S3200.

c# replace wildcard find

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

如何在C#按钮文本属性中使用"&"字符来正确显示

我的C#代码是:

        Button button;
        button = new Button();

        button.Text = "B&C";

        this.Controls.Add(button);
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码时,我的表单上的按钮显示BC(并且C通常带有下划线).

我知道我可以将它设置为B && C以使我的按钮文本以B&C形式出现,但我的应用程序的用户在配置按钮上的文本时不会知道键入B && C.

他们只会输入B&C,或C&B等,它们将作为BC和CB出现.

我该如何解决这个问题?

谢谢.

c# text string-formatting

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

跨线程操作无效 - listbox Clear语句

我收到此错误,因为我试图从最初未创建的线程更新我的列表框:

跨线程操作无效:从除以外的线程访问控制'tbHistory'

Thread t = new Thread(UpdateHistory);          // Kick off a new thread
t.Start();

private void UpdateHistory()
{
//tbHistory is a listbox
tbHistory.Items.Clear();
}
Run Code Online (Sandbox Code Playgroud)

有人可以给我代码来解决这个问题吗?我知道我应该使用invoke,但我在Google上找到的例子并没有帮助我.这些示例似乎只显示了如何更改标签文本,而不是清除列表框.

.net c# multithreading

0
推荐指数
1
解决办法
2061
查看次数