CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

求教:如何用C#(或ASP.NET)向MSSQL输入中文

楼主qingcaodi()2004-09-03 02:34:29 在 .NET技术 / C# 提问

如题。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

相关问题

  • 请教c输入
  • C输入求助
  • c中的输入问题。
  • c或c++的输入输出问题
  • 疑惑!C#的输入流“比不上”C++的输入流
  • 请教C++输入格式问题
  • c能否输入二进制数
  • c#里如何设置输入法?
  • c程序的数据输入问题
  • C++是怎么输入输出的?

关键词

  • asp.net
  • c#
  • 中文
  • mssql
  • 数据库
  • 字符
  • 数据
  • 经验
  • asp
  • 输入

得分解答快速导航

  • 帖主:qingcaodi
  • saucer
  • ckvip
  • lhx1977
  • jinbingg
  • happyjun2000
  • danlog
  • xcode21
  • mywebcom
  • yingshis
  • hivak47
  • Firestone2003
  • AssemblyInfo
  • yellowhwb
  • chengsion

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo