之前不乱之后乱

waz99 2009-09-04 04:45:43
dataset的数据往数据库插入,设断点跟踪了一下,没写入数据库之前正常,写入数据库之后在数据库里显示乱码了?怎么回事呢?高手指点下。
...全文
115 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
waz99 2009-09-04
  • 打赏
  • 举报
回复
问题解决了,谢谢各位
waz99 2009-09-04
  • 打赏
  • 举报
回复
没什么页面吧,就一个窗体,我就是想整个可执行文件,把数据从dataset插入到数据库表,mysql里没找到nvarchar,用的char,呵呵,对此几乎一点不懂,多多指教,不胜感激!
kouzhikai 2009-09-04
  • 打赏
  • 举报
回复
首先将数据库字段类型设为nvarchar,
如果插入数据库没乱码,调用时乱码的话,那就是你页面的编码集有问题,检查下页面的编码
waz99 2009-09-04
  • 打赏
  • 举报
回复
加了N也不管用 :(
waz99 2009-09-04
  • 打赏
  • 举报
回复
我把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();
}
}


就是乱码了?
waz99 2009-09-04
  • 打赏
  • 举报
回复
我插入数据库时候加N试试,谢谢大家,不行了我再过来,呵呵
muyebo 2009-09-04
  • 打赏
  • 举报
回复
是数据库的字符集问题,你再程序里面除了加N没有别的办法了
muyebo 2009-09-04
  • 打赏
  • 举报
回复
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
waz99 2009-09-04
  • 打赏
  • 举报
回复
找了个这样的函数,咋不管用呢?

//批量数据转换
//其实就是将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;
}
gengshuai670 2009-09-04
  • 打赏
  • 举报
回复
char就是
差不多的意思。。就是你数据类型弄错了。。我以前也遇到过新手问题哈哈
muyebo 2009-09-04
  • 打赏
  • 举报
回复
建数据用个合适的字符集,类似orcale的utf-8
waz99 2009-09-04
  • 打赏
  • 举报
回复
谢谢回答,我试试,不过mysql里没找到NCHAR 或者 NVARCHAR的类型
,只有varchar,char类型
dancingbit 2009-09-04
  • 打赏
  • 举报
回复
数据库中的字段类型使用Nvarchar。
鸭梨山大帝 2009-09-04
  • 打赏
  • 举报
回复
數據庫里面設定的欄位的類型不對,設置為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測試,测试þØ'
) B

SELECT * 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測試,测试þØ'
) B

SELECT * FROM #TEMP
waz99 2009-09-04
  • 打赏
  • 举报
回复
能否给指点一下解决办法呢?非常谢谢
year2005 2009-09-04
  • 打赏
  • 举报
回复
字符集的问题
waz99 2009-09-04
  • 打赏
  • 举报
回复
插入数据库里的数据显示乱码了,知道咋回事不?
flyerwing 2009-09-04
  • 打赏
  • 举报
回复
编码问题,等高人!
yanniu008 2009-09-04
  • 打赏
  • 举报
回复
数据库里显示乱吗了???插入的数据库是乱码???

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧