C# 将信息从ASP.NET网页插入数据库
我试图允许用户使用教科书和下拉菜单输入员工信息。由于某些我目前无法看到的原因,它没有正确地插入到数据库中。我尝试了SqlCommandMode中的所有查询,它们都正常工作,但那是在我使用函数中的参数之前。下面是我在DBconn.cs页面中的代码C# 将信息从ASP.NET网页插入数据库,c#,asp.net,sql-server,database,C#,Asp.net,Sql Server,Database,我试图允许用户使用教科书和下拉菜单输入员工信息。由于某些我目前无法看到的原因,它没有正确地插入到数据库中。我尝试了SqlCommandMode中的所有查询,它们都正常工作,但那是在我使用函数中的参数之前。下面是我在DBconn.cs页面中的代码 public void insertEmployeeInfo(string firstName, string middleName, string lastName, string address1, string address2, stri
public void insertEmployeeInfo(string firstName, string middleName, string lastName, string address1, string address2, string city, string postalCode, string state)
{
SqlConnection conn = new SqlConnection(strConnString);
string sql1 = "INSERT INTO Person.BusinessEntity(ModifiedDate) VALUES (GETDATE())";
string sql2 = "INSERT INTO Person.Person (ModifiedDate, BusinessEntityID, PersonType, Title, FirstName, MiddleName, LastName, Suffix) VALUES (GETDATE(), (SELECT MAX(PB.BusinessEntityID) AS IDNUM FROM PErson.BusinessEntity AS PB), 'EM', @title, @firstName, @lastName, @suffix)";
string sql3 = "INSERT INTO Person.Address (AddressLine1, AddressLine2, City, StateProvinceID, PostalCode, ModifiedDate) VALUES (@address1, @address2, @city, @postalCode, (SELECT StateProvinceID FROM Person.StateProvince WHERE StateProvinceCode=@state))";
try
{
conn.Open();
SqlCommand cmd1 = new SqlCommand(sql1, conn);
SqlCommand cmd2 = new SqlCommand(sql2, conn);
SqlCommand cmd3 = new SqlCommand(sql3, conn);
SqlParameter[] personParams = new SqlParameter[3];
SqlParameter[] addressParams = new SqlParameter[5];
//Params for inserts into Person.Person
personParams[0] = new SqlParameter("@firstName", SqlDbType.VarChar, 50);
personParams[1] = new SqlParameter("@middleName", SqlDbType.VarChar, 50);
personParams[2] = new SqlParameter("@lastName", SqlDbType.VarChar, 50);
//Params for inserts into Person.Address
addressParams[0] = new SqlParameter("@address1", SqlDbType.VarChar, 50);
addressParams[1] = new SqlParameter("@address2", SqlDbType.VarChar, 50);
addressParams[2] = new SqlParameter("@city", SqlDbType.VarChar, 50);
addressParams[3] = new SqlParameter("@postalCode", SqlDbType.VarChar, 50);
addressParams[4] = new SqlParameter("@state", SqlDbType.VarChar, 50);
personParams[0].Value = firstName;
personParams[1].Value = middleName;
personParams[2].Value = lastName;
addressParams[0].Value = address1;
addressParams[1].Value = address2;
addressParams[2].Value = city;
addressParams[3].Value = postalCode;
addressParams[4].Value = state;
//insert ModifiedDate into Person.BusinessEntity
cmd1.CommandType = CommandType.Text;
cmd1.ExecuteNonQuery();
for (int i = 0; i < personParams.Length; i++)
{
cmd2.Parameters.Add(personParams[i]);
}
//insert new employee name information into Person.Person
cmd2.CommandType = CommandType.Text;
cmd2.ExecuteNonQuery();
for (int i = 0; i < addressParams.Length; i++)
{
cmd3.Parameters.Add(addressParams[i]);
}
//insert new employee address information
cmd3.CommandType = CommandType.Text;
cmd3.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Insert Error:";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
}
}
在您的连接上启用MARS:
这里有一堆代码。你有例外吗?如果是,在哪里?不要以为我们马上就知道你的代码出了什么问题,你需要解释你想要的答案。我道歉。不,我没有任何例外。当我为演示单击insert按钮时,它似乎不会调用查询,也不会将用户信息插入数据库。我假设我需要添加更多来插入,但不确定我需要添加什么除了为什么不插入之外,我建议您调用存储过程,而不是三个单独的插入。您在应用程序中执行了吗?在代码中设置一个断点,并逐行检查它,以确保它按预期执行。我正在mac上通过vm运行它,调试一直不正常。虽然我几乎可以肯定这是page.asp.cs中的代码,但我不知道该放什么。我是asp.net的新手,所以很抱歉我对此事缺乏了解
protected void Insert_Click(object sender, EventArgs e)
{
dbcon.insertEmployeeInfo(TxtFirstName.Text, TxtMiddleName.Text, TxtLastName.Text, TxtAddress1.Text, TxtAddress2.Text, TxtCity.Text, TxtPostalCode.Text, State.Text);
Response.Write("Record was successfully added!");
}