在Web应用程序中,我放置两个文本框和按钮,用于插入非英语语言的数据。当我插入SQL Server时,它只显示“???????(1877?)”,但我将数据类型设为nvarchar
,即使它没有使用该语言,是否存在插入和显示非英语文本的任何不同方式。
CREATE TABLE [dbo].[Multilingual](
[name] [nvarchar](50) NULL,
[address] [nvarchar](50) NULL
) ON [PRIMARY]
GO
string sq = "insert into multilingual (name,address) values ('" + txtname.Text + "','" + txtadd.Text + "')";
cmd = new SqlCommand(sq, con);
cmd.CommandType = CommandType.Text;
int i = cmd.ExecuteNonQuery();
if (i == 1)
{
get();
}
答案 0 :(得分:2)
您生成的INSERT
语句类似于
insert into multilingual
(name,address)
values ('Foo','Bar')
它需要看起来像
insert into multilingual
(name,address)
values (N'Foo',N'Bar') /*Notice the N prefix*/
避免将字符串文字视为非Unicode而可能导致数据丢失。但不要这样做。
除了数据丢失问题之外,您的查询还容易受到SQL injection的影响,并且如果您的网站暴露在互联网上,您的网站将会被黑客入侵。您应该使用参数化查询中讨论的参数化查询。
答案 1 :(得分:1)
尝试做类似下面的事情:
SqlParameter param = new SqlParameter();
param.SqlDbType = System.Data.SqlDbType.NVarChar;
param.Value = txtname.Text;
SqlParameter param1 = new SqlParameter();
param1 .SqlDbType = System.Data.SqlDbType.NVarChar;
param1 .Value = txtadd.Text;
string sq = "insert into multilingual (name,address) values (param ,param1)";
cmd = new SqlCommand(sq, con);
cmd.CommandType = CommandType.Text;