我有asp.net mvc4项目,其中有学生数据库,也有旧数据库的.xls格式,我需要将旧数据库中的所有值迁移到新的一个sql server数据库。在我的mvc项目中,我有会员控制器,其中包括注册新学生的方法。另外我编写控制台应用程序解析.xls表,并通过寄存器方法将所有值插入到我的新数据库中。解析excel .xls数据库到sql server数据库
控制台应用程序:
static void Main(string[] args)
{
string con = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\MigrateExelSql\Include\TestDb.xlsx; Extended Properties=Excel 12.0;";
MembershipController mc = new MembershipController();
Student student = new Student();
student.Username = null;
student.Password = "password";
student.Email = null;
student.EntryYear = 2014;
student.PassportNumber = 0;
student.IsApproved = true;
student.PasswordFailuresSinceLastSuccess = 0;
student.IsLockedOut = false;
using(OleDbConnection connection = new OleDbConnection(con))
{
connection.Open();
OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection);
using(OleDbDataReader dr = command.ExecuteReader())
{
while(dr.Read())
{
string row1Col0 = dr[0].ToString();
Console.WriteLine(row1Col0);
string row1Col1 = dr[1].ToString();
Console.WriteLine(row1Col1);
Console.WriteLine();
student.Username = row1Col0;
student.Email = row1Col1;
try
{
mc.Register(student);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Console.ReadKey();
}
注册方法
public static MembershipCreateStatus Register(string Username, string Password, string Email, bool IsApproved, string FirstName, string LastName)
{
MembershipCreateStatus CreateStatus;
System.Web.Security.Membership.CreateUser(Username, Password, Email, null, null, IsApproved, null, out CreateStatus);
if (CreateStatus == MembershipCreateStatus.Success)
{
using (UniversityContext Context = new UniversityContext(ConfigurationManager.ConnectionStrings[0].ConnectionString))
{
Student User = Context.Students.FirstOrDefault(Usr => Usr.Username == Username);
User.FirstName = FirstName;
User.LastName = LastName;
Context.SaveChanges();
}
if (IsApproved)
{
FormsAuthentication.SetAuthCookie(Username, false);
}
}
return CreateStatus;
}
的ActionResult POST
public ActionResult Register(Student student)
{
Register(student.Username, student.Password, student.Email, true, student.FirstName, student.LastName);
return RedirectToAction("Index", "Membership");
}
一切都正常工作,当我尝试添加从Web应用程序的学生,但是当我尝试从我的分析数据库中添加这是得到错误的下一行
System.Web.Security.Membership.CreateUser(Username, Password, Email, null, null, IsApproved, null, out CreateStatus);
我
Register
方法
,即invalidAnswer
。我更改为“123456789”,然后下一个错误将为invalidQuestion
,然后我也从null更改为“123456789”。在此之后,它告诉我,我的invalidPassword。此外,我在我的web.config
requiresQuestionAndAnswer="false"
中加入了我的会员供应商的一行。
我不知道为什么它不起作用。有人有任何想法吗?
当我使用ado.net而不是注册方法一切正常,但我无法登录用户,我用这种方法创建。 – BorHunter