我刚刚使用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.
有人可以告诉我这里我做错了什么吗?
谢谢.
我的代码可以很好地将文件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) 当字符串中有反斜杠"\"时,为什么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#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) 我希望能够读取文件,并替换以下所有实例:
带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#代码是:
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出现.
我该如何解决这个问题?
谢谢.
我收到此错误,因为我试图从最初未创建的线程更新我的列表框:
跨线程操作无效:从除以外的线程访问控制'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上找到的例子并没有帮助我.这些示例似乎只显示了如何更改标签文本,而不是清除列表框.