我要从一个数据库A的表Member中将其数据查询出来,放到现有数据库B中的两个表里,一个存要同步过来的字段名,一个存同步过来的字段值,但是Member表查出来的结果是:
MID Name Phone Mail Role InDate
1 张三 1234 [email protected] Admin 2011-9-9
2 李四 2121 [email protected] User 2011-9-10
可是同步过来后需要存入两个表里
表1:ID FieldName 表2:ID MID FieldID Content
1 Name 1 1 1 张三
2 Phone 2 1 2 1234
3 Mail 3 1 3 [email protected]
4 Role 4 1 4 Admin
5 InDate 5 1 5 2011-9-9
6 2 1 李四
7 2 2 2121
8 2 3 [email protected]
9 2 4 User
10 2 5 2011-9-10
怎样才能将Member表里的数据都放入这两个表中?
MID Name Phone Mail Role InDate
1 张三 1234 [email protected] Admin 2011-9-9
2 李四 2121 [email protected] User 2011-9-10
可是同步过来后需要存入两个表里
表1:ID FieldName 表2:ID MID FieldID Content
1 Name 1 1 1 张三
2 Phone 2 1 2 1234
3 Mail 3 1 3 [email protected]
4 Role 4 1 4 Admin
5 InDate 5 1 5 2011-9-9
6 2 1 李四
7 2 2 2121
8 2 3 [email protected]
9 2 4 User
10 2 5 2011-9-10
怎样才能将Member表里的数据都放入这两个表中?
解决方案 »
- 为什么我的网站发布到服务器时,超过一定的时间想再次进入网站,会显示无法显示网站???
- 关于下载.Response.BufferOutput=false;
- 请写一个验证表达式
- 关于删除数据问一个简单的实现
- DropDownList内容改变后,TextBox显示结果
- repeater的疑难症
- [求助]上传缩略图的问题?
- 关于sql的数据迁移问题,小弟初学,觉得应该不是很难的问题。。
- 如何得到虚拟目录的物理地址?
- 在vs.net中的服务器资源管理器中的数据库连接经常要断掉
- FileInfo获取的文件排序问题
- asp.net2.0网站,web层引用dal,bll,等其它层,总是提示找不到类型或命名空间名称“School_DAL”(是否缺少 using 指令或程序集引用
for(int i=0;i<dt.rows.count;i++)
{
for(int j=0;j<dt.column.count;j++)
{
insert into b.a (i,dt.rows 列); insert into b.b (id,i,dt.rows 列,dt.rows[i][j])
}
}
WHERE id = object_id('TableName')
ORDER BY colorder
首先你取出member表字段名称
select [name] from 你的数据库名..syscolumns where id=object_id('Member')
结果:设为 数据1
MID
Name
Phone
Mail
Role
InDate
之后,你把这些值插入表1,
再取出它们对应的FieldID
select ID from 表2 where FieldName in 数据1结果设为:数据2
把数据2排序(升序),好为下一步能对应的上下面往表2插入数据,假设datatble dt 已经准备好数据(
MID Name Phone Mail Role InDate
1 张三 1234 [email protected] Admin 2011-9-9
) for(int k=0;k<dt.rows.count;k++)
{
for(int i;i<数据2长度;i++) {
for(int j=1;j<数据2长度;j++)
{
insert into 表2 values(dt.rows[k].itemarray[0].ToString(),dt.rows[k].itemarray[1].ToString(),数据2[i],dt.rows[k].itemarray[j].ToString());
}
}
}
这是伪代码。楼主不明白的再问我
create database Ause Acreate table Member
(
[MID] int identity primary key,
[Name] nvarchar(20),
[Phone] nvarchar(20),
[Mail] nvarchar(255),
[Role] nvarchar(20),
[InDate] nvarchar(20)
)insert into Member
select '张三','1234','[email protected]','Admin','2011-9-9' union all
select '李四','2121','[email protected]','User','2011-9-10'
/*数据库B*/
create database Buse Bcreate table B_Field
(
[ID] int identity primary key,
[FieldName] nvarchar(80)
)create table B_Data
(
[ID] int identity primary key,
[MID] nvarchar(20),
[FieldID] nvarchar(20),
[Content] nvarchar(255)
)Default.aspx.cs代码:protected void Page_Load(object sender, EventArgs e)
{
DataTable aField = new DataTable(); //字段记录集
DataTable aData = new DataTable(); //数据记录集 DataTable bfield = new DataTable(); string connString1 = "server=.;user id=sa;pwd=111;database=A";
string connString2 = "server=.;user id=sa;pwd=111;database=B"; using (SqlConnection conn = new SqlConnection(connString1))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn; SqlDataAdapter da = new SqlDataAdapter(cmd); cmd.CommandText = "select Name from syscolumns where id = object_id('Member')";
da.Fill(aField); cmd.CommandText = "select * from member";
da.Fill(aData);
} using (SqlConnection conn = new SqlConnection(connString2))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn; SqlDataAdapter da = new SqlDataAdapter(cmd); for (int i = 0, dc = aField.Rows.Count; i < dc; i++)
{
cmd.CommandText = string.Format("insert into B_Field values('{0}')", aField.Rows[i]["Name"].ToString());
cmd.ExecuteNonQuery();
} cmd.CommandText = "select * from B_Field";
da.Fill(bfield); for (int i = 0, dc1 = aData.Rows.Count; i < dc1; i++)
{
for (int j = 0, dc2 = bfield.Rows.Count; j < dc2; j++)
{
string fieldId = bfield.Rows[j]["ID"].ToString();
string fieldName = bfield.Rows[j]["FieldName"].ToString();
cmd.CommandText = string.Format("insert into B_Data values('{0}','{1}','{2}')", aData.Rows[i]["MID"], fieldId, aData.Rows[i][fieldName]);
cmd.ExecuteNonQuery();
}
}
}
}
已经测试
2. 程序多次运行,会多次插入数据到B_Field和B_Data,你可以加个判断机制