文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>怎样匹配SQL与C#中的数据类型(从XML读取DataSet并更新数据源)

怎样匹配SQL与C#中的数据类型(从XML读取DataSet并更新数据源)

时间:2010-12-29  来源:GIS飞行者

查了很多的资料,确是个难题,没办法只能使用笨方法了~~~~

写了一个函数,

///将C#标准数据类型转换为SQL数据类型

System::String^DataBaseManager::ConvertCsharpToSqlDataType(System::String^ strDataType)
{
   System::String^ sqlDataType=strDataType->ToLowerInvariant();
   if (sqlDataType=="boolean")
    sqlDataType="BIT";
   else if (sqlDataType=="string")
   {
    sqlDataType="varchar";
   }
   else if (sqlDataType=="int16"||sqlDataType=="int32"||sqlDataType=="int64")
   {
    sqlDataType="int";
   }
   else if (sqlDataType=="double")
   {
    sqlDataType="float";
   }
   else if (sqlDataType=="single")
   {
    sqlDataType="real";
   }
   else if (sqlDataType=="datetime")
   {
    sqlDataType="DateTime";
   }
   else if (sqlDataType=="guid")
   {
    sqlDataType="uniqueidentifier";
   }
   else if (sqlDataType=="byte"||sqlDataType=="byte[]")
   {
    sqlDataType="binary";
   }
   else if (sqlDataType=="decimal")
   {
    sqlDataType="Decimal";
   }
   else
    sqlDataType="varchar";
   return sqlDataType;
}

///复制DataTable表架构,在数据库生成对应的表

System::Data::DataTable^table=(System::Data::DataTable^)Enum->Current;
    System::String^tableName=table->TableName;
    System::Data::OleDb::OleDbCommand^command=gcnew System::Data::OleDb::OleDbCommand;
    command->CommandText="CREATE TABLE "+tableName;
    command->Connection=connetion;
    command->ExecuteNonQuery();
    System::Collections::IEnumerator ^ColumnEnum=table->Columns->GetEnumerator();
    int pos=0;
    while(ColumnEnum->MoveNext())
    {
     System::Data::DataColumn ^colum = (System::Data::DataColumn^)ColumnEnum->Current;
     //判断该列是不是该表的主键

     System::Collections::ArrayList^list=gcnew System::Collections::ArrayList;

     System::String ^columType = colum->DataType->Name;
     columType=this->ConvertCsharpToSqlDataType(columType);
     System::String ^AddColumText = "Alter Table "+tableName+" Add " + colum->ColumnName + " "+columType+ " null";
     //VARCHAR(20) null"; //+colum.DataType.Name + " null";
     System::Data::OleDb::OleDbCommand^ command1 = gcnew System::Data::OleDb::OleDbCommand(AddColumText,connetion);
     command1->ExecuteNonQuery();
     if (pos==0)
     {
      command1->CommandText="Alter Table "+tableName+" Add Constraint p_id Primary key ("+colum->ColumnName+")";
      command1->ExecuteNonQuery();
     }

     pos++;

虽然能够将读取的数据库表复制到保存目录,但是存在将原本的数据类型转换为字符串型的可能性,例如,在数据库中原数据列可能是超链接型数据,那么在复制后的数据列中该列的数据类型却转化为了文本型~~~

无语~~期盼有高人指点一二~~

相关阅读 更多 +
排行榜 更多 +
白银之城手游官服下载

白银之城手游官服下载

角色扮演 下载
像素赛车手魔改版下载

像素赛车手魔改版下载

赛车竞速 下载
自由城计划翼豪陆神模组手机版下载

自由城计划翼豪陆神模组手机版下载

角色扮演 下载