求教:如何用C#(或ASP.NET)向MSSQL输入中文
如题。MSSQL的设置没有问题,可以直接在数据库中放入中文,再取出后,字符能正常显示。但如果用C#输入,在数据库中的全部是“???”。
请问,有人知道如何用吗?C#或ASP.NET都可以。
问题点数:100、回复次数:20Top
1 楼saucer(思归)回复于 2004-09-03 04:35:56 得分 35
are you using NCHAR or NTEXT or IMAGE column?
try the following:
1. sql script
use tempdb
go
create table mytable (id int identity primary key, name nvarchar(1000))
go
2.
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<form runat="server">
<BR><asp:Button id="btn" runat="server" Text="Refresh" />
<asp:DataGrid id="DataGrid1" runat="server" />
<BR>
Enter: <asp:TextBox id="TextBox1" runat="server" />
<BR><asp:Button id="btn1" runat="server" Text="Submit" OnClick="DoInsert" />
</form>
<script language="C#" runat="server">
string strConn = "server=localhost;database=tempdb;uid=sa;pwd=;";
void Page_Load(Object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}
void BindGrid()
{
SqlDataAdapter da = new SqlDataAdapter("select * from mytable", strConn);
DataTable dt = new DataTable();
da.Fill(dt);
DataGrid1.DataSource = dt.DefaultView;
DataGrid1.DataBind();
}
void DoInsert(Object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(strConn);
try
{
SqlCommand cmd = new SqlCommand("insert into mytable values (@name)", conn);
cmd.Parameters.Add("@name",TextBox1.Text);
conn.Open();
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
BindGrid();
}
</script>
3. if you still have problems, try to modify your web.config
<configuration>
<system.web>
<globalization
requestEncoding="GB2312"
responseEncoding="GB2312" fileEncoding="GB2312"
/>
</system.web>
</configuration>
Top
2 楼ckvip(大天使特瑞亚)回复于 2004-09-03 08:01:48 得分 5
mssql直接支持中文,数据类型用nchar或ntextTop
3 楼lhx1977(清水无鱼)回复于 2004-09-03 08:11:12 得分 5
就象是平常的数据操作一样,没有什么特别的,
如果是不太长,把字段设置为nvarchar 就可以了.可以支持到8K字符.
Top
4 楼jinbingg(bing)回复于 2004-09-03 08:20:34 得分 5
mssql直接支持中文,数据类型用nchar或ntext
Top
5 楼happyjun2000(蓝色游侠∮是非成败转头空)回复于 2004-09-03 08:23:02 得分 5
upTop
6 楼danlog(龙帝)回复于 2004-09-03 08:47:05 得分 5
数据类型用nvarchar 比较好!!
学习一下!!Top
7 楼xcode21(PCDIY)回复于 2004-09-03 08:51:18 得分 5
既然直接输入能用,估计是SQLServer没有问题
你的ASP.NET是不是使用Dreamweaver创建的?如果是,把<@Page……>里的那个字符设为GB2312的一项去掉,就可以了。Top
8 楼mywebcom(我)回复于 2004-09-03 09:02:23 得分 5
如果你用存储过程,是什么样的表名更本不重要了。
你需要做得是把一些参数传进去,然后调用ExecuteNonQuery()执行就可以了
还有,你说输入的是乱码,这很简单,将你传入的字符串在数据库里面定义为text 类型。Top
9 楼yingshis(英石)回复于 2004-09-03 09:03:33 得分 5
数据类型尽量设置为nvarchar,这种类型支持多字节字符集。Top
10 楼qingcaodi()回复于 2004-09-04 04:09:16 得分 0
数据库设置没有问题,用的是ntext,而且已经测试过可以直接输入中文。现在的问题是:如何用C#或ASP.NET实现用程序输入。
试过用ASP,可以实现中文输入。但是.NET就不行。另外还有些是本机上的应用,用C#写;C#中读取的中文显示正确,就是不能向MSSQL中写入中文。
To xcode21(X-Code): 我会试一试你的方法。Top
11 楼hivak47(比尔)回复于 2004-09-04 08:29:31 得分 5
向saucer(思归/MVP)学习.Top
12 楼Firestone2003(笨笨小猪)回复于 2004-09-04 08:48:48 得分 5
设置web.config里的
<globalization
requestEncoding="GB2312"
responseEncoding="GB2312"
/>Top
13 楼qingcaodi()回复于 2004-09-07 23:33:53 得分 0
To saucer(思归/MVP): 想请问一下,你实现过用C#向MSSQL输入中文吗?如果实现过,能否请教一下?
To Firestone2003(笨笨小猪): 你提供的方法用在ASP.NET上估计可行。我在网上找过,很多资料都提到了你的方法。不过,这两天服务器有点问题,测试不了,过两天我会试试看。
如果有人有过用C#向MSSQL输入中文成功的经验,请帮帮忙。Top
14 楼qingcaodi()回复于 2004-09-09 20:51:02 得分 0
顶. 没有人知道吗?Top
15 楼AssemblyInfo(装配件)回复于 2004-09-09 21:08:16 得分 5
C#在SQL数据库里读写中文都正常,C#不可能这一点都做不到,一定是其他的地方出了问题,检查一下代码与环境的编码设置,或者把代码放到其他电脑上运行一下试试Top
16 楼qingcaodi()回复于 2004-09-13 21:01:04 得分 0
检查什么设置?在插入前,用Console和MessageBox显示的中文都是正确的;数据库的设置也应该没有问题,能够存入中文。可就是实现不了。我也知道有一步关键的没有做,就好象用C#读取中文时,必须用系统的Encoding一样,但这一步是什么?没有人知道吗?
我现在想知道,有没有人有过成功的经验。Top
17 楼yellowhwb(天の羽)回复于 2004-09-13 21:11:45 得分 5
肯定是你的编码有问题,utf-8,gb1312,……可以自己看一下!Top
18 楼qingcaodi()回复于 2004-09-16 20:48:44 得分 0
顶。
再问一次:有没有人有过用C#向MSSQL输入中文成功的经验?Top
19 楼chengsion()回复于 2004-10-11 10:15:53 得分 5
也许
@"中文字符"
可以Top
20 楼qingcaodi()回复于 2004-10-18 21:28:54 得分 0
早就试过了,不行。-_-
还是谢谢各位。Top




