說明Ado.Net代碼亂碼介紹問題
各種說明Ado.Net代碼亂碼介紹問題的開發(fā)數(shù)據(jù)庫應(yīng)用程序,常規(guī)時都不直接對數(shù)據(jù)庫操作,而是先完成數(shù)據(jù)連接和通過數(shù)據(jù)適配器填充DataSet對象,然后客戶端再通過讀取DataSet來獲得需要的數(shù)據(jù),
ADO.NET,首先必須了解、掌握DataSet。DataSet主要有三個特性:
1. 獨立性。DataSet獨立于各種數(shù)據(jù)源。微軟公司在推出DataSet時就考慮到各種數(shù)據(jù)源的多樣性、復(fù)雜性。在Ado.Net代碼中,無論什么類型數(shù)據(jù)源,Ado.Net代碼都會提供一致的關(guān)系編程模型,而這就是DataSet。#t#
2. 離線(斷開)和連接。DataSet既可以以離線方式,也可以以實時連接來操作數(shù)據(jù)庫中的數(shù)據(jù)。這一點有點像ADO中的RecordSet。
3. DataSet對象是一個可以用XML形式表示的數(shù)據(jù)視圖,是一種數(shù)據(jù)關(guān)系視圖。
這樣子寫Ado.Net代碼,執(zhí)行以后數(shù)據(jù)庫中中文字符顯示亂碼,PS:Article_Subject 為NCHAR,Article_Content 為Ntext
- strSql = "INSERT INTO Articles ([Article_Subject] ,[Article_Content] ,[Author_ID] ,[Post_Time])
- ALUES ('測試','測試','FrancisLiu','"+DateTime.Today.ToShortDateString()+"')";
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = conn;
- cmd.CommandText = strSql;
- cmd.ExecuteNonQuery();
- 用 SqlParameter沒問題的
- strSql.Append("insert into [Articles](");
- strSql.Append("[article_Subject],[article_Content][author_id],[post_time])");
- strSql.Append(" values (");
- strSql.Append("@article_Subject,@article_Content,@author_id,@make_time,@sReply_count)");
- SqlParameter[] parameters = {
- new SqlParameter("@article_Subject", SqlDbType.NChar,40),
- new SqlParameter("@article_Content", SqlDbType.NText),
- new SqlParameter("@author_id", SqlDbType.NChar,10),
- new SqlParameter("@make_time", SqlDbType.NChar,25)
- parameters[0].Value = model.article_Subject;
- parameters[1].Value = model.article_Content;
- model.make_time;