SQLSERVER与C#中数据类型的对应关系
SQLSERVER与C#中数据类型的对应关系 ///<summary> ///数据库中与C#中的数据类型对照 ///</summary> ///<paramname="type"></param> ///<returns></returns> privatestringChangeToCSharpType(stringtype) { stringreval=string.Empty; switch(type.ToLower()) { case"int": reval="Int32"; break; case"text": reval="String"; break; case"bigint": reval="Int64"; break; case"binary": reval="System.Byte[]"; break; case"bit": reval="Boolean"; break; case"char": reval="String"; break; case"datetime": reval="System.DateTime"; break; case"decimal": reval="System.Decimal"; break; case"float": reval="System.Double"; break; case"image": reval="System.Byte[]"; break; case"money": reval="System.Decimal"; break; case"nchar": reval="String"; break; case"ntext": reval="String"; break; case"numeric": reval="System.Decimal"; break; case"nvarchar": reval="String"; break; case"real": reval="System.Single"; break; case"smalldatetime": reval="System.DateTime"; break; case"smallint": reval="Int16"; break; case"smallmoney": reval="System.Decimal"; break; case"timestamp": reval="System.DateTime"; break; case"tinyint": reval="System.Byte"; break; case"uniqueidentifier": reval="System.Guid"; break; case"varbinary": reval="System.Byte[]"; break; case"varchar": reval="String"; break; case"Variant": reval="Object"; break; default: reval="String"; break; } returnreval; } 我为何要找上面这篇文章呢。因为我在写程序时碰到了这样一件事: 昨天晚上写程序,程序如下: using System; using System.Data; using System.Data.SqlClient; namespace GetStudent { /// <summary> /// Class1 的摘要说明 /// </summary> class Class1 { static void Main(string[] args) { string connstr = "server=(local);Initial Catalog=BYSJ;User ID =SA;Password=;"; //SqlConnection conn = new SqlConnection(connstr); SqlConnection conn = new SqlConnection(); conn.ConnectionString = connstr; conn.Open(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "Select id, sName from student"; SqlDataReader reader = cmd.ExecuteReader(); string output; while(reader.Read()) { output = string.Format("学生 {0}\t 的学号是 {1}",reader.GetString(1), reader.GetString(0)); Console.WriteLine(output); } reader.Close(); conn.Close(); } } } 但是发现编译过去了,但是却读不出数据来,而且有这样的提示:InvalidCastException。 我查了一下MSDN,发现这个出现的条件是指定的强制转换无效。然后发现要求:所检索的数据必须已经是字符串,所以我检查了一下数据库,把数据结构都改成了nvarchar,然后发现就可以了。真是经验啊。