2012-07-05 134 views
3

我使用c#程序将一些unicode字符(如中文字符)插入到SQL Server 2012数据库中。SQL Server 2012 Express中的Unicode

我试图插入的列是nvarchar,但我仍然在使用???????而不是正确的字符。我从Twitter获取推文并将其插入数据库。

我正在使用SQL Server 2012 Express。我必须安装任何语言包还是更改设置?我不是很熟悉SQL Server。

这是我如何使用C#代码插入到数据库:

String command4 = "INSERT INTO tweets ([username], [createdDate], [tweet]) Values ('" + item.user.screen_name + "' , '" + item.created_at + "' ,N'" + escapedString + "')"; 

SqlCommand insertTweet = new SqlCommand(command4, connectionstring); 

insertTweet.ExecuteNonQuery(); 

谢谢!

+0

你不需要任何东西 - SQL Server完全能够处理Unicode。请**告诉我们如何从C#插入数据# – 2012-07-05 10:29:54

+0

http://msdn.microsoft.com/en-us/library/ms143726 – 2012-07-05 10:31:37

+0

@marc_s对不起,这是我如何从c#插入数据:String command4 = “INSERT INTO tweets([username],[createdDate],[tweet])值(''+ item.user.screen_name +'','”+ item.created_at +“','”+ escapedString +“')” ; SqlCommand insertTweet = new SqlCommand(command4,connectionstring); insertTweet.ExecuteNonQuery(); – Phantom 2012-07-05 11:02:44

回答

3

当通过字符作为SQL字符串,总是先有 “N”:

N'Unicode' 

,而不是仅仅

'Unicode' 

或者你的情况:

@"INSERT INTO tweets ([username], [createdDate], [tweet]) 
Values (N'" + item.user.screen_name + "' , '" + item.created_at + "' , N'" + escapedString + "')" 

通过的方式,你应该use parameters。它可以一次解决很多问题(比如你拥有的,日期和数字格式,安全等等)。

+0

参数像:String username = item.user.screen_name? – Phantom 2012-07-05 11:13:26

+1

不,参数像SqlParameter(文档帮助)。然后将值放入SqlParameter实例并引用它 – TomTom 2012-07-05 11:14:41

+0

甚至更​​好:**使用参数**而不是连接在一起你的SQL语句! – 2012-07-05 11:52:33