dataset的数据往数据库插入,设断点跟踪了一下,没写入数据库之前正常,写入数据库之后在数据库里显示乱码了?怎么回事呢?高手指点下。

解决方案 »

  1.   

    數據庫里面設定的欄位的類型不對,設置為NCHAR 或者 NVARCHAR.
    而且再在程式插入資料的T-SQL語句前 + N
    比如一下代码乱码:IF OBJECT_ID('TEMPDB..#TEMP') >0 DROP TABLE #TEMP
    CREATE TABLE #TEMP(TXT CHAR(100))INSERT INTO #TEMP
    SELECT * FROM
    (
    SELECT A= N'SSS測試,测试þØ'
    ) BSELECT * FROM #TEMP
    以下代码不会乱码:IF OBJECT_ID('TEMPDB..#TEMP') >0 DROP TABLE #TEMP
    CREATE TABLE #TEMP(TXT NVARCHAR(100))INSERT INTO #TEMP
    SELECT * FROM
    (
    SELECT A= N'SSS測試,测试þØ'
    ) BSELECT * FROM #TEMP
      

  2.   

    数据库中的字段类型使用Nvarchar。
      

  3.   

    谢谢回答,我试试,不过mysql里没找到NCHAR 或者 NVARCHAR的类型 
    ,只有varchar,char类型
      

  4.   

    建数据用个合适的字符集,类似orcale的utf-8
      

  5.   

    char就是
    差不多的意思。。就是你数据类型弄错了。。我以前也遇到过新手问题哈哈
      

  6.   

    找了个这样的函数,咋不管用呢?  //批量数据转换
            //其实就是将dataset的内容读出到xml文件,然后再输出
            public DataSet ISO8859_GB2312(DataSet ds)
            {
                string xml;
                xml = ds.GetXml();
                ds.Clear();
                //声明字符集
                System.Text.Encoding iso8859, utf8;
                //iso8859
                iso8859 = System.Text.Encoding.GetEncoding("iso8859-1");
                //国标2312
                utf8 = System.Text.Encoding.GetEncoding("utf-8");
                byte[] bt;
                bt = iso8859.GetBytes(xml);
                xml = utf8.GetString(bt);
                ds.ReadXml(new System.IO.StringReader(xml));
                return ds;
            }
      

  7.   

    insert into aa values('SSS測試,测试þØ')
    select * from aa
    a
    --------------------
    SSS測試,??tO(1 row(s) affected)
    http://topic.csdn.net/u/20090825/16/fa49f62b-453b-4243-8f36-21ddee3cf53f.html
      

  8.   

    我把sql语句拿出来直接在mysql里执行插入数据,数据库里面没有乱码。
    而调用  /// <summary>
            /// 执行 SQL 语句,并返回受影响的行数
            /// </summary>
            /// <returns></returns>
            public int ExecuteNonQuery()
            {
                if (string.IsNullOrEmpty(_ConnectionString)) 
                { 
                    throw (new Exception("无传入数据连接字串")); 
                }            if (string.IsNullOrEmpty(_CommandText))
                { 
                    throw (new Exception("无传入SQL语句"));
                }            if (!DSAFConnectionTest()) 
                { 
                    throw (new Exception("尝试数据库连接失败"));
                }
                int iQuery = 0;
               
                MySqlTransaction Transaction = null;            try
                {
                    MySqlCommand Comm = new MySqlCommand(); 
                    Conn = new MySqlConnection();
                    Conn.ConnectionString = _ConnectionString;
                    Conn.Open();
                    Comm.Connection = Conn;
                    Comm.CommandText = _CommandText;                Transaction = Conn.BeginTransaction(); 
                    Comm.Transaction = Transaction;                iQuery = Comm.ExecuteNonQuery(); 
                    Transaction.Commit(); 
                    return iQuery;
                }
                catch (MySqlException MySqlEx)
                { 
                    Transaction.Rollback(); 
                    throw MySqlEx;
                }
                catch (Exception ex) 
                { 
                    throw ex;
                }
                finally 
                { Transaction.Dispose(); 
                  Conn.Close(); 
                  Conn.Dispose();
                }
            }
    就是乱码了?
      

  9.   

    首先将数据库字段类型设为nvarchar,
    如果插入数据库没乱码,调用时乱码的话,那就是你页面的编码集有问题,检查下页面的编码
      

  10.   

    没什么页面吧,就一个窗体,我就是想整个可执行文件,把数据从dataset插入到数据库表,mysql里没找到nvarchar,用的char,呵呵,对此几乎一点不懂,多多指教,不胜感激!