ACCESS数据库转换到SQL数据库 由于表结构、字段设置等都不一样 还需要加密 所以写这个转换程序 但是当转换前4W条时 速度可达到3000条/分钟 4W条以后数据立即就变为平均1条/秒了 请问是怎么 回事?if (access()==1 || sql()==1) return;//判断数据库连接是否正确的一个方法
int dlcs=0,yhid=1,yhxb=1,jinbi=0,Mshen=0,Mbai=0,Mpin=0,Mtaopao=0,Dshen=0,Dbai=0,Dpin=0,Dtaopao=0,Mdlcs=0,Ddlcs=0,Myxsc=0,Dyxsc=0,Mduan=0,Dduan=0;//,newid=1
string yhmc="",dzyj="",yhmm="",tswt="",wtda="",dlip="",zcsj="",zsxm="",lxdz="",yzbm="",sfz="";
OleDbConnection conn=new OleDbConnection();
conn.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;" +@"Data source="+aa1;
OleDbCommand linshi3=new OleDbCommand("select count(linshi) from "+aa2+"",conn);//判断linshi字段是否存在
OleDbCommand linshi7=new OleDbCommand("select count(user_id) from "+aa2+"",conn);//取得需转换的用户数量
OleDbCommand linshi6=new OleDbCommand("alter table USER_BASE_INFO ADD linshi integer",conn);//建立linshi字段
OleDbCommand linshi10=new OleDbCommand("select top 1 * from USER_BASE_INFO where linshi is null",conn);//取出一条未转换的用户数据
//OleDbCommand linshi27=new OleDbCommand("insert into USER_BASE_INFO (linshi) values (1) where user_id="+yhid+"",conn);
int shuliang=1;
try
{conn.Open(); OleDbDataReader linshi4=linshi3.ExecuteReader();
if (linshi4.Read()) {linshi4.Close();
OleDbDataReader linshi8=linshi7.ExecuteReader();
if (linshi8.Read()) shuliang=linshi8.GetInt32(0); linshi8.Close();}
else{linshi4.Close(); OleDbDataReader linshi5=linshi6.ExecuteReader();
if (linshi5.Read()){} else{} linshi5.Close();}}
catch{ OleDbDataReader linshi5=linshi6.ExecuteReader();
if (linshi5.Read()){} else{} linshi5.Close();
OleDbDataReader linshi4=linshi7.ExecuteReader();
if (linshi4.Read()) {shuliang=linshi4.GetInt32(0); linshi4.Close();}}
finally {conn.Close();}
conn.Open();
sjk.DatabaseOperate sqlconn=new DatabaseOperate();
ybgame.mima jj=new ybgame.mima();//加密类
int nan=4,girl=0;//定义男头像从4开始,女头像从0开始
int tou=0;
int kaishi=Convert.ToInt32(textBox8.Text);
for (int i=kaishi;i<=shuliang;i++)
{
//conn.Open();
OleDbDataReader linshi12=linshi10.ExecuteReader();
if (linshi12.Read())
{
yhid=linshi12.GetInt32(0);//取得用户ID
yhmm=linshi12.GetString(1).Trim();//取得用户密码
jinbi=linshi12.GetInt32(3);//取得金币数量
//yhxb=linshi12.GetInt32(5);// 取得用户性别???????
string xingbie=linshi12.GetString(5).Trim();
if (xingbie=="男")
{
yhxb=0;
nan=nan+1;
if (nan>7) nan=4;
tou=nan;
}
else
{
girl=girl+1;
if (girl>3) girl=0;
tou=girl;
} dzyj=linshi12.GetValue(6).ToString().Trim();//取得用户EMAIL
yhmc=linshi12.GetValue(7).ToString();//取得用户名称
tswt=linshi12.GetValue(8).ToString();//取得提示问题
wtda=linshi12.GetValue(9).ToString();//取得问题答案
zcsj=linshi12.GetValue(14).ToString().Trim();//取得注册时间
zsxm=linshi12.GetValue(15).ToString().Trim();//取得真实姓名
lxdz=linshi12.GetValue(16).ToString().Trim();//取得联系地址
yzbm=linshi12.GetValue(17).ToString().Trim();//取得邮政编码
//if (yb!="") yzbm=Convert.ToInt32(yb);
dlcs=linshi12.GetInt32(18);//取得用户登陆次数
sfz=linshi12.GetValue(19).ToString().Trim();//取得身份证
dlip=linshi12.GetValue(24).ToString().Trim();//取得用户注册登陆IP
}
else
{
label9.Visible=true;
label9.Text="取ACCESS表用户信息时出现错误!!";
}
linshi12.Close();
OleDbCommand linshi13=new OleDbCommand("select top 1 * from USER_SCORE_INFO where USER_NAME='"+yhmc+"'",conn);//取得用户对应的麻将游戏信息
OleDbCommand linshi14=new OleDbCommand("select top 1 * from USER_DDZ_SCORE where USER_NAME='"+yhmc+"'",conn);//取得用户对应的斗地主游戏信息
数据的转换";
int dlcs=0,yhid=1,yhxb=1,jinbi=0,Mshen=0,Mbai=0,Mpin=0,Mtaopao=0,Dshen=0,Dbai=0,Dpin=0,Dtaopao=0,Mdlcs=0,Ddlcs=0,Myxsc=0,Dyxsc=0,Mduan=0,Dduan=0;//,newid=1
string yhmc="",dzyj="",yhmm="",tswt="",wtda="",dlip="",zcsj="",zsxm="",lxdz="",yzbm="",sfz="";
OleDbConnection conn=new OleDbConnection();
conn.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.4.0;" +@"Data source="+aa1;
OleDbCommand linshi3=new OleDbCommand("select count(linshi) from "+aa2+"",conn);//判断linshi字段是否存在
OleDbCommand linshi7=new OleDbCommand("select count(user_id) from "+aa2+"",conn);//取得需转换的用户数量
OleDbCommand linshi6=new OleDbCommand("alter table USER_BASE_INFO ADD linshi integer",conn);//建立linshi字段
OleDbCommand linshi10=new OleDbCommand("select top 1 * from USER_BASE_INFO where linshi is null",conn);//取出一条未转换的用户数据
//OleDbCommand linshi27=new OleDbCommand("insert into USER_BASE_INFO (linshi) values (1) where user_id="+yhid+"",conn);
int shuliang=1;
try
{conn.Open(); OleDbDataReader linshi4=linshi3.ExecuteReader();
if (linshi4.Read()) {linshi4.Close();
OleDbDataReader linshi8=linshi7.ExecuteReader();
if (linshi8.Read()) shuliang=linshi8.GetInt32(0); linshi8.Close();}
else{linshi4.Close(); OleDbDataReader linshi5=linshi6.ExecuteReader();
if (linshi5.Read()){} else{} linshi5.Close();}}
catch{ OleDbDataReader linshi5=linshi6.ExecuteReader();
if (linshi5.Read()){} else{} linshi5.Close();
OleDbDataReader linshi4=linshi7.ExecuteReader();
if (linshi4.Read()) {shuliang=linshi4.GetInt32(0); linshi4.Close();}}
finally {conn.Close();}
conn.Open();
sjk.DatabaseOperate sqlconn=new DatabaseOperate();
ybgame.mima jj=new ybgame.mima();//加密类
int nan=4,girl=0;//定义男头像从4开始,女头像从0开始
int tou=0;
int kaishi=Convert.ToInt32(textBox8.Text);
for (int i=kaishi;i<=shuliang;i++)
{
//conn.Open();
OleDbDataReader linshi12=linshi10.ExecuteReader();
if (linshi12.Read())
{
yhid=linshi12.GetInt32(0);//取得用户ID
yhmm=linshi12.GetString(1).Trim();//取得用户密码
jinbi=linshi12.GetInt32(3);//取得金币数量
//yhxb=linshi12.GetInt32(5);// 取得用户性别???????
string xingbie=linshi12.GetString(5).Trim();
if (xingbie=="男")
{
yhxb=0;
nan=nan+1;
if (nan>7) nan=4;
tou=nan;
}
else
{
girl=girl+1;
if (girl>3) girl=0;
tou=girl;
} dzyj=linshi12.GetValue(6).ToString().Trim();//取得用户EMAIL
yhmc=linshi12.GetValue(7).ToString();//取得用户名称
tswt=linshi12.GetValue(8).ToString();//取得提示问题
wtda=linshi12.GetValue(9).ToString();//取得问题答案
zcsj=linshi12.GetValue(14).ToString().Trim();//取得注册时间
zsxm=linshi12.GetValue(15).ToString().Trim();//取得真实姓名
lxdz=linshi12.GetValue(16).ToString().Trim();//取得联系地址
yzbm=linshi12.GetValue(17).ToString().Trim();//取得邮政编码
//if (yb!="") yzbm=Convert.ToInt32(yb);
dlcs=linshi12.GetInt32(18);//取得用户登陆次数
sfz=linshi12.GetValue(19).ToString().Trim();//取得身份证
dlip=linshi12.GetValue(24).ToString().Trim();//取得用户注册登陆IP
}
else
{
label9.Visible=true;
label9.Text="取ACCESS表用户信息时出现错误!!";
}
linshi12.Close();
OleDbCommand linshi13=new OleDbCommand("select top 1 * from USER_SCORE_INFO where USER_NAME='"+yhmc+"'",conn);//取得用户对应的麻将游戏信息
OleDbCommand linshi14=new OleDbCommand("select top 1 * from USER_DDZ_SCORE where USER_NAME='"+yhmc+"'",conn);//取得用户对应的斗地主游戏信息
数据的转换";
解决方案 »
- asp.net C# 如何做日程提前三个月提醒
- 用户登陆,密码要求在数据库里用md5加密,怎么写select语句以及怎么去加密呢, where用户名='" + TextBox1.Text + "'and password=什么?
- 求救DataTable数据生成TreeView结构,高手请进来帮忙,谢谢?
- 新手问题:并非所有的代码路径都返回值
- 关于Web.config的问题
- windows服务失效问题
- 两个listview模板类,另求动态模板postback后读取
- 一个SOCKET的问题,服务器端如何向客户端发送消息
- C# 如何用证书和密钥进行Socket连接
- 一个关于confirm()的问题
- 请教一个对系统进行加密的问题
- 关于多线程的新手问题,急!!!!!!!!!!!!!
OleDbDataReader linshi15=linshi13.ExecuteReader();
if (linshi15.Read())
{
Mdlcs=linshi15.GetInt32(1);//取得登陆次数
Myxsc=linshi15.GetInt32(2);//取得总游戏次数
Mshen=linshi15.GetInt32(3);//取得胜利次数
Mbai=linshi15.GetInt32(4);//取得失败次数
Mtaopao=linshi15.GetInt32(5);//取得逃跑次数
//Mduan=Convert.ToInt32(linshi15.GetValue(6).ToString().Trim());//取得断线次数
Mduan=linshi15.GetInt32(6);//取得断线次数
Mpin=Myxsc-Mshen-Mbai-Mtaopao-Mduan;
if (Mpin<0) Mpin=0;
}
else
{
// label9.Visible=true;
// label9.Text="取ACCESS表麻将信息时出现错误!!";
// return;
}
linshi15.Close();
//*****************************************取得麻将游戏相关信息结束*********************
//*****************************************取得斗地主游戏相关信息开始*********************
OleDbDataReader linshi16=linshi14.ExecuteReader();
if (linshi16.Read())
{
Ddlcs=linshi16.GetInt32(1);//取得登陆次数
Dyxsc=linshi16.GetInt32(2);//取得总游戏次数
Dshen=linshi16.GetInt32(3);//取得胜利次数
Dbai=linshi16.GetInt32(4);//取得失败次数
Dtaopao=linshi16.GetInt32(5);//取得逃跑次数
//Dduan=Convert.ToInt32(linshi16.GetValue(6).ToString().Trim());//取得断线次数
Dduan=linshi16.GetInt32(6);//取得断线次数
Dpin=Dyxsc-Dshen-Dbai-Dtaopao-Dduan;
if (Dpin<0) Dpin=0;
}
else
{
// label9.Visible=true;
// label9.Text="取ACCESS表斗地主信息时出现错误!!";
// return;
}
linshi16.Close();
//*****************************************取得斗地主游戏相关信息结束*********************
//conn.Close();
yhmm=jj.passwordB(yhmm);
//#################################################新SQL录入开始##############################
//sjk.DatabaseOperate sqlconn=new DatabaseOperate();//数据库操作类
//>>>>>>>>>>>>>>>>>>>>>>写入用户基本信息
string[] strColNames1 = {"userName","iconID","age","gender","email","hashPasswd","regTime","regIp","totalOnlineTime","nickName"};//存放数据库字段的名称
object[] objColValues1 = {yhmc,tou,18,yhxb,dzyj.Replace("'","''"),yhmm,zcsj,dlip,dlcs,yhmc.Replace("'","''")};//存放从页面窗体取到的值
if(sqlconn.InsertRecord("UserInfo",strColNames1,objColValues1)){}
else{label9.Visible=true;label9.Text="写入SQL表用户信息时出现错误!!"; return;}
//>>>>>>>>>>>>>>>>>>>>>取得新录入用户的用户ID号
// SqlDataReader linshi30=sqlconn.GetDataReader("select max(userID) from UserInfo");
// SqlDataReader linshi30=sqlconn.GetDataReader("select top 1 userID from UserInfo order by userID desc");
// if (linshi30.Read()) {newid=linshi30.GetInt32(0); linshi30.Close();} else {linshi30.Close(); return;}
// newid=i;
//>>>>>>>>>>>>>>>>>>>>>将该用户的其它信息写入Userelse表
string[] strColNames12 = {"userID","tswt","wtda"};//存放数据库字段的名称
object[] objColValues12 = {i,tswt.Replace("'","''"),wtda.Replace("'","''")};//存放从页面窗体取到的值
if(sqlconn.InsertRecord("Userelse",strColNames12,objColValues12)){}
else{label9.Visible=true;label9.Text="写入SQL表用户的其它信息时出现错误!!"; return;}
//>>>>>>>>>>>>>>>>>>>>>将该用户的金币信息写入UserAccount表
string[] strColNames2 = {"userID","money"};//存放数据库字段的名称
object[] objColValues2 = {i,jinbi};//存放从页面窗体取到的值
if(sqlconn.InsertRecord("UserAccount",strColNames2,objColValues2)){}
else{label9.Visible=true;label9.Text="写入SQL表用户的金币信息时出现错误!!"; return;}
//>>>>>>>>>>>>>>>>>>>>>写入用户斗地主相关信息
string[] strColNames3 = {"userID","gameID","score","winGames","lossGames","equalGames","escGames"};//存放数据库字段的名称
object[] objColValues3 = {i,1,0,Dshen,Dbai,Dpin,Dtaopao};//存放从页面窗体取到的值
if(sqlconn.InsertRecord("GameInfo",strColNames3,objColValues3)){}
else{label9.Visible=true;label9.Text="写入SQL表用户的用户斗地主相关信息时出现错误!!"; return;}
//>>>>>>>>>>>>>>>>>>>>>写入用户麻将相关信息
string[] strColNames4 = {"userID","gameID","score","winGames","lossGames","equalGames","escGames"};//存放数据库字段的名称
object[] objColValues4 = {i,2,0,Mshen,Mbai,Mpin,Mtaopao};//存放从页面窗体取到的值
if(sqlconn.InsertRecord("GameInfo",strColNames4,objColValues4)){}
else{label9.Visible=true;label9.Text="写入SQL表用户的用户麻将相关信息时出现错误!!"; return;}
//#################################################新SQL录入结束############################## //***************************************为已转换用户增加标记开始*********************
OleDbCommand linshi27=new OleDbCommand("update USER_BASE_INFO set linshi=1 where user_id="+yhid+"",conn);
//
int tt=linshi27.ExecuteNonQuery();
//***************************************为已转换用户增加标记结束*********************
//
label9.Visible=true;
label9.Text="已完成:"+i+"/"+shuliang;
label9.Refresh();
}
conn.Close();
// Form2 ct2=new Form2(label10.Text);
// ct2.Show();
progressBar1.Visible=false;
label9.Text="已经成功完成"+shuliang+"条