大家做系统更新或者升级都可能要触及到数据的转换。
对于ORACLE中的数据转换可以用写存储过程来放之游标,将你要的数据一条一条的转换。
而对于SERVER虽然你可以将它转换到ORACLE中(升级的方式),但有问题你会发现有的表是不可以直接转换的!
所以我就用代码控制直接转换!也是一种比较容易控制容易写的方法!
首先你要在程序中建立连接(server的)
string strCon=
"workstation id=XJ;packet size=4096;user id=sa;data source=\
"automap\\automap\
";persist security info=True;initial catalog=bgxtrmt;password=sa
";
string strTxt =
"SELECT tworder_code, stru_b, layer_b, area_ub, area_b, east, south, west, north, area_sb, densy_b, grean_b, park, park_bike, other_area,grean_b,sp_build_p FROM bgxtpab2_1
";
SqlConnection SqlCon = new SqlConnection(strCon);
SqlCommand SqlCmd = new SqlCommand(strTxt,SqlCon);
SqlCon.Open();
然后将你要读的数据用dataReader.reader方法读进来!
SqlDataReader SqlDR = SqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
while(SqlDR.Read())
{
try
{
OracleCon.Open();
Bgxtpab2_1 bg = new Bgxtpab2_1();
//Doc d = new Doc();
//int i = -1;
bg.Tworder_Code = SqlDR.GetString(0).Trim();
bg.Stru_B = SqlDR.IsDBNull(1)?
"":SqlDR.GetString(1).Trim();
bg.Layer_B = SqlDR.IsDBNull(2)?0:SqlDR.GetInt32(2);
bg.Area_UB = SqlDR.IsDBNull(3)?
"":SqlDR.GetString(3);
bg.Area_B = SqlDR.IsDBNull(4)?
"":SqlDR.GetString(4);
bg.East_B = SqlDR.IsDBNull(5)?
"":SqlDR.GetString(5).Trim();
bg.South_B = SqlDR.IsDBNull(6)?
"":SqlDR.GetString(6).Trim();
bg.West_B = SqlDR.IsDBNull(7)?
"":SqlDR.GetString(7).Trim();
bg.North_B = SqlDR.IsDBNull(8)?
"":SqlDR.GetString(8).Trim();
//bg.Layer_BD = SqlDR.IsDBNull(++i)?0.0F:SqlDR.GetInt32(i);
bg.Area_SB = SqlDR.IsDBNull(9)?
"":SqlDR.GetString(9);
bg.Densy_B = SqlDR.IsDBNull(10)?
"":SqlDR.GetString(10);
bg.Park = SqlDR.IsDBNull(11)?0.0F:SqlDR.GetFloat(11);
bg.Park_Bike = SqlDR.IsDBNull(12)?0.0F:SqlDR.GetFloat(12);
bg.OTher_Area = SqlDR.IsDBNull(13)?0.0F:SqlDR.GetFloat(13);
bg.Grean_B = SqlDR.IsDBNull(14)?0.0F:SqlDR.GetFloat(14);
bg.Sp_build_P = SqlDR.IsDBNull(15)?
"":SqlDR.GetString(15);
这样你就获得了你要的数据,还要提到的是!你必须为你想读的表写个数据表的类!
using System;
namespace ProjectBulid
{
/// <summary>
/// Bgxtpab2_1工程数据表
/// </summary>
public class Bgxtpab2_1
{
string tworder_code;
//string project_b;
string densy_b;
string stru_b;
int layer_b;
string area_ub;
string area_b;
string usage_b;
string east;
string south;
string west;
string north;
string area_sb;
float grean_b;
float park;
float park_bike;
// decimal other_area_b;
string sp_build_p;
float other_area;
public Bgxtpab2_1()
{
tworder_code =
"";
//project_b=
"";
stru_b =
"";
layer_b = 0;
area_ub =
"";
area_b =
"";
usage_b =
"";
east =
"";
south=
"";
west =
"";
north =
"";
//layer_db = 0;
area_sb =
"";
densy_b =
"";
grean_b = 0.0F;
park = 0.0F;
park_bike = 0.0F;
sp_build_p =
"";
other_area = 0.0F;
}
public string Tworder_Code
{
get
{
return tworder_code;
}
set
{
tworder_code =
value;
}
}
public string Densy_B
{
get
{
return densy_b;
}
set
{
densy_b =
value;
}
}
// public int Project_B
// {
// get
// {
// return project_b;
// }
// set
// {
// project_b =
value;
// }
// }
public string Stru_B
{
get
{
return stru_b;
}
set
{
stru_b =
value;
}
}
public int Layer_B
{
get
{
return layer_b;
}
set
{
layer_b =
value;
}
}
public string Area_UB
{
get
{
return area_ub;
}
set
{
area_ub =
value;
}
}
public string Area_B
{
get
{
return area_b;
}
set
{
area_b =
value;
}
}
public string Usage_B
{
get
{
return usage_b;
}
set
{
usage_b =
value;
}
}
public string East_B
{
get
{
return east;
}
set
{
east =
value;
}
}
public string South_B
{
get
{
return south;
}
set
{
south =
value;
}
}
public string West_B
{
get
{
return west;
}
set
{
west =
value;
}
}
public string North_B
{
get
{
return north;
}
set
{
north =
value;
}
}
// public int Layer_BD
// {
// get
// {
// return layer_db;
// }
// set
// {
// layer_db =
value;
// }
// }
public string Area_SB
{
get
{
return area_sb;
}
set
{
area_sb =
value;
}
}
public float Grean_B
{
get
{
return grean_b;
}
set
{
grean_b =
value;
}
}
public float Park
{
get
{
return park;
}
set
{
park =
value;
}
}
public float Park_Bike
{
get
{
return park_bike;
}
set
{
park_bike =
value;
}
}
public string Sp_build_P
{
get
{
return sp_build_p;
}
set
{
sp_build_p =
value;
}
}
public float OTher_Area
{
get
{
return other_area;
}
set
{
other_area =
value;
}
}
}
}
下面要做的就是往oracle中写你要的数据了!
建立连接:
string OracleString =
"user id=construct;data source=oracle;password=rose
";
string OracleText = “在这里写你要插入的sql语句“
OracleConnection OracleCon = new OracleConnection(OracleString);
OracleCommand OracleCmd = new OracleCommand(OracleText,OracleCon);
然后帮oracle表中构造字段:
#region BuildingEnnginger参数设置
OracleCmd.Parameters.Clear();
OracleCmd.Parameters.Add(
":DOCID
",OracleType.Int32);
OracleCmd.Parameters.Add(
":CONSTRUCTDENSITY
",OracleType.Float);
OracleCmd.Parameters.Add(
":BUILDINGTOTALHEIGHT
",OracleType.Float);
OracleCmd.Parameters.Add(
":GREENAREA
",OracleType.Float);
OracleCmd.Parameters.Add(
":PARKINGAREA
",OracleType.Float);
OracleCmd.Parameters.Add(
":MINIPARKINGAREA
",OracleType.Float);
OracleCmd.Parameters.Add(
":OTHERESTABLISHMENTAREA
",OracleType.Float);
OracleCmd.Parameters.Add(
":CUBAGERATE
",OracleType.Float);
OracleCmd.Parameters.Add(
":LANDUSAGE
",OracleType.Int32);
OracleCmd.Parameters.Add(
":AGROUNDFLOORCOUNT
",OracleType.Int32);
OracleCmd.Parameters.Add(
":UNDERGROUNDFLOORCOUNT
",OracleType.Int32);
OracleCmd.Parameters.Add(
":EAST
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":WEST
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":SOUTH
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":NORTH
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":ORIGINALUSELANDAREA
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":ORIGINALBUILDINGAREA
",OracleType.Float);
OracleCmd.Parameters.Add(
":ORIGINALSTRUCTURETYPE
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":ORIGINALFLOORAMOUNT
",OracleType.Int32);
OracleCmd.Parameters.Add(
":ORIGINALEAST
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":ORIGINALWEST
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":ORIGINALSOUTH
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":ORIGINALNORTH
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":BUILDINGMEMO
",OracleType.VarChar);
OracleCmd.Parameters.Add(
":ALLPLINTHAREA
",OracleType.Float);
OracleCmd.Parameters.Add(
":DESIGNAGROUNDFLOOR
",OracleType.Int32);
OracleCmd.Parameters.Add(
":DESIGNUNDERGROUNDFLOOR
",OracleType.Int32);
OracleCmd.Parameters.Add(
":DESIGNSPECIALTIESFLOOR
",OracleType.VarChar);
#endregion
#region 参数附值
OracleCmd.Parameters[
":DOCID
"].
value = SelectInsert(bg.Tworder_Code).ToString(); //这里是传参数进去获得想得到的数据
后面的就是你俯值的详细代码了;( 如bg.Densy_B)
if(bg.Densy_B.ToString() ==
"")
OracleCmd.Parameters[
":CONSTRUCTDENSITY
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":CONSTRUCTDENSITY
"].
value = bg.Densy_B;
OracleCmd.Parameters[
":BUILDINGTOTALHEIGHT
"].
value = DBNull.
value;
if(bg.Grean_B.ToString() ==
"")
OracleCmd.Parameters[
":GREENAREA
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":GREENAREA
"].
value = bg.Grean_B;
if(bg.Park.ToString() ==
"")
OracleCmd.Parameters[
":PARKINGAREA
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":PARKINGAREA
"].
value = bg.Park;
if(bg.Park_Bike.ToString() ==
"")
OracleCmd.Parameters[
":MINIPARKINGAREA
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":MINIPARKINGAREA
"].
value = bg.Park_Bike;
if(bg.OTher_Area.ToString() ==
"")
OracleCmd.Parameters[
":OTHERESTABLISHMENTAREA
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":OTHERESTABLISHMENTAREA
"].
value = bg.OTher_Area;
OracleCmd.Parameters[
":CUBAGERATE
"].
value = DBNull.
value;
OracleCmd.Parameters[
":LANDUSAGE
"].
value = DBNull.
value; //词典
if(bg.Layer_B.ToString() ==
"")
OracleCmd.Parameters[
":AGROUNDFLOORCOUNT
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":AGROUNDFLOORCOUNT
"].
value = bg.Layer_B;
OracleCmd.Parameters[
":UNDERGROUNDFLOORCOUNT
"].
value = DBNull.
value;
if(bg.East_B ==
"")
OracleCmd.Parameters[
":EAST
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":EAST
"].
value = bg.East_B;
if(bg.West_B ==
"")
OracleCmd.Parameters[
":WEST
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":WEST
"].
value = bg.West_B;
if(bg.South_B ==
"")
OracleCmd.Parameters[
":SOUTH
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":SOUTH
"].
value = bg.South_B;
if(bg.North_B ==
"")
OracleCmd.Parameters[
":NORTH
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":NORTH
"].
value = bg.North_B;
if(bg.Area_UB ==
"")
OracleCmd.Parameters[
":ORIGINALUSELANDAREA
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":ORIGINALUSELANDAREA
"].
value = bg.Area_UB;
if(bg.Area_B ==
"")
OracleCmd.Parameters[
":ORIGINALBUILDINGAREA
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":ORIGINALBUILDINGAREA
"].
value = bg.Area_B;
if(bg.Stru_B ==
"")
OracleCmd.Parameters[
":ORIGINALSTRUCTURETYPE
"].
value = DBNull.
value;
else
OracleCmd.Parameters[
":ORIGINALSTRUCTURETYPE
"].
value = bg.Stru_B;
OracleCmd.Parameters[
":ORIGINALFLOORAMOUNT
"].
value = DBNull.
value;
OracleCmd.Parameters[
":ORIGINALEAST
"].
value = DBNull.
value;
OracleCmd.Parameters[
":ORIGINALWEST
"].
value = DBNull.
value;
OracleCmd.Parameters[
":ORIGINALSOUTH
"].
value = DBNull.
value;
OracleCmd.Parameters[
":ORIGINALNORTH
"].
value = DBNull.
value;
OracleCmd.Parameters[
":BUILDINGMEMO
"].
value = DBNull.
value;
OracleCmd.Parameters[
":ALLPLINTHAREA
"].
value = DBNull.
value;
OracleCmd.Parameters[
":DESIGNAGROUNDFLOOR
"].
value = DBNull.
value;
OracleCmd.Parameters[
":DESIGNUNDERGROUNDFLOOR
"].
value = DBNull.
value;
OracleCmd.Parameters[
":DESIGNSPECIALTIESFLOOR
"].
value = DBNull.
value;
最后要讲到的就是写函数来获得你要从其他表中得到的数据!
public int SelectInsert(string tm)
{
int id = 0;
try
{
string OracleString =
"user id=construct;data source=oracle;password=rose
";
OracleConnection OracleConn = new OracleConnection(OracleString);
OracleConn.Open();
//string temp;
string str =
"SELECT ID FROM
document.DOC WHERE TM =
'" +tm.Trim() +
"'";
OracleCommand OracleComd = new OracleCommand(str,OracleConn);
Object obj = OracleComd.ExecuteScalar();
if(obj != null)
{
id = Convert.ToInt32(obj);
}
//id = int.Parse(OracleComd.ExecuteOracleScalar().ToString());
#region
// Object obj = OracleComd.ExecuteReader();
// if(obj!=null)
// {
// id = Convert.ToInt32(obj);
// }
// if(obj >1)
// {
// id = Convert.ToInt32(obj) + 100;
// }
#endregion
OracleConn.Close();
OracleConn.Dispose();
//DR1.Dispose();
}
catch(Exception ex)
{
Debug.Fail(ex.Message +
"-
"+ ex.StackTrace);
}
return id;
}
这里随你怎么写!无论是要什么值只要在其他表中有关联的字段,就可以获得你想要的数据!
程序写到这里也差不多完了。这是我想到的一种方法!
大家有什么好方法共享写大家一起学习!
多指教!!!
发表于 @ 2008年03月12日 16:17:00|评论(loading...)