设为首页 收藏本站
查看: 716|回复: 0

[经验分享] 数据类型的小小研究:Access与SQL Server的数据类型

[复制链接]

尚未签到

发表于 2015-6-30 12:56:49 | 显示全部楼层 |阅读模式
           在Access中只有10中数据类型,其中一种对应String的 数据类型是 文本 ,但是SQL Server中的数据类型有多种:char,nchar,nvarchar,varchar,text,ntext。如下图:
   DSC0000.jpg
  那它们之间有什么区别呢,在Access里面怎么可以用吗?带着这些疑问我做了实验。
  1、在Access中用这些数据类型创建表



public void Create()
{
string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\74390440_69_20081029.mdb;Persist Security Info=False";
string query = "CREATE TABLE Test(t1 char(10),t2 nchar(10),t3 nvarchar(50),t4 varchar(50),t5 ntext,t6 text)";
OleDbHelper.ExecuteNonQuery(connectString, CommandType.Text, query, null);
}

  居然用这样的SQL语句"CREATE TABLE Test(t1 char(10),t2 nchar(10),t3 nvarchar(50),t4 varchar(50),t5 ntext,t6 text)"创建成功了! DSC0001.jpg
  在char,nchar,nvarchar,varchar这四个类型中,所创建的都是一样,都是文本类型。text与ntext创建成备注类型了。

  2、Access里面填入数据导入到相同的SQL Server数据表中



public void Insert()
{
string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\74390440_69_20081029.mdb;Persist Security Info=False";
string query = "select * from Test";
DataSet ds = new DataSet();
OleDbConnection connA = new OleDbConnection(connectString);
connA.Open();
OleDbDataAdapter oda = new OleDbDataAdapter(query, connA);
oda.Fill(ds);
connA.Close();
SqlConnection conn = new SqlConnection("server=.;database=NBBSImport;uid=sa;pwd=;");
conn.Open();
SqlBulkCopy sbc = new SqlBulkCopy(conn);
sbc.DestinationTableName ="Test";
  //将数据集合和目标服务器的字段对应
for (int q = 0; q < ds.Tables[0].Columns.Count; q++)
{
sbc.ColumnMappings.Add(ds.Tables[0].Columns[q].ColumnName, ds.Tables[0].Columns[q].ColumnName);
}
try
{
sbc.WriteToServer(ds.Tables[0]);
}
catch(Exception ex)
{
throw;
}

}

  很不幸,结果出错了, DSC0002.jpg
  找来了数据类型的对应关系:
  访问类型名称
  数据库数据类型
  OLEDB 类型
  .NET 框架类型
  成员名称
  文本
  VarWChar
  DBTYPE _ WSTR
  System.String
  OleDbType.VarWChar
  备忘录
  LongVarWCha R
  DBTYPE _ WSTR
  System.String
  OleDbType.LongVarWChar
  字节数:
  UnsignedTinyInt
  DBTYPE _ UI 1
  System.Byte
  OleDbType.UnsignedTinyInt
  是 / 否
  Boolean
  DBTYPE_BOOL
  System.Boolean
  OleDbType.Boolean
  日期 / 时间
  DateTime
  DBTYPE _ DATE
  System.DateTime
  OleDbType.date
  货币
  十进制
  DBTYPE_NUMERIC
  System.Decimal
  OleDbType.numeric
  十进制数:
  十进制
  DBTYPE_NUMERIC
  System.Decimal
  OleDbType.numeric
  双数:
  双
  DBTYPE_R8
  System.Double
  OleDbType.Double
  Autonumber (复制 ID)
  GUID
  DBTYPE_GUID
  System.Guid
  OleDbType.guid
  复制 (ID) 号:
  GUID
  DBTYPE_GUID
  System.Guid
  OleDbType.guid
  Autonumber (长整型)
  整数
  DBTYPE_I4
  System.Int 32
  OleDbType.integer
  数量: (长整型)
  整数
  DBTYPE_I4
  System.Int 32
  OleDbType.integer
  OLE 对象
  LongVarBinary
  DBTYPE_BYTES
  数组
System.Byte
  OleDbType.LongVarBinary
  单个数字:
  单个
  DBTYPE_R4
  System.Single
  OleDbType.single
  整型数:
  SmallInt
  DBTYPE_I2
  System.Int 16
  OleDbType.SmallInt
  二进制
  VarBinary *
  DBTYPE_BYTES
  数组
System.Byte
  OleDbType.binary
  超链接
  VarWChar
  DBTYPE _ WSTR
  System.String
  OleDbType.VarWChar
  原来从SQL Server中的char类型到Access大小变了,那么再从Access导入到SQL Server就会出错了。
  3、如果把SQL Server中的char,nchar类型的长度大小变为20,这样导入就没有错了。如
DSC0003.jpg
  这次的数据类型小研究到此结束,这个给新手区的首页浪费资源了。呵呵......... DSC0004.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81942-1-1.html 上篇帖子: 【转载】SQL Server DBA工作内容详解 下篇帖子: Visual Studio 2005 Team Edition和SQL Server 2005的下载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表