2015-11-26 129 views
2

我在这里甚至在Visual Studio中都还是新手,所以我不完全知道Visual Studio中的所有功能。我试图将数据插入到SQL Server中。当我运行这些代码并输入必要的信息时,我的标签消息就会显示出来,但是当我查看SQL Server时,没有任何变化。 Visual Studio已连接到SQL Server。我在这里先向您的帮助表示感谢。在SQL Server中插入新记录

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 

public partial class NewEmployee : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Page.IsPostBack == true) 
     { 
      Label14.Text = ("**Your data has been entered in SQL"); 
     } 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     SqlConnection vid = new SqlConnection("Data Source=JOSAN;Initial Catalog=AdventureWorks2012;Integrated Security=True"); 
     { 
      SqlCommand xp = new SqlCommand("Insert into HumanResources.Employee(NationalIDNumber, LoginID, JobTitle, BirthDate, MaritalStatus, Gender, HireDate, SalariedFlag, VacationHours, SickLeaveHours, CurrentFlag, ModifiedDate) Values(@NationalIDNumber, @loginID, @JobTitle, @BirthDate, @MaritalStatus, @Gender, @HireDate, @SalariedFlag, @VacationHours, @SickLeaveHours, @CurrentFlag, @ModifiedDate)", vid); 
      xp.Parameters.AddWithValue("@NationalIDNumber", Convert.ToInt32(TextBox1.Text)); 
      xp.Parameters.AddWithValue("@LoginID", TextBox2.Text); 
      xp.Parameters.AddWithValue("@JobTitle", TextBox3.Text); 
      xp.Parameters.AddWithValue("@BirthDate", Convert.ToDateTime(TextBox4.Text)); 
      xp.Parameters.AddWithValue("@MaritalStatus", Convert.ToChar(TextBox5.Text)); 
      xp.Parameters.AddWithValue("@Gender", Convert.ToChar(TextBox6.Text)); 
      xp.Parameters.AddWithValue("@HireDate", Convert.ToDateTime(TextBox7.Text)); 
      xp.Parameters.AddWithValue("@SalariedFlag", Convert.ToInt32(TextBox8.Text)); 
      xp.Parameters.AddWithValue("@VacationHours", Convert.ToInt32(TextBox9.Text)); 
      xp.Parameters.AddWithValue("@SickLeaveHours", Convert.ToInt32(TextBox10.Text)); 
      xp.Parameters.AddWithValue("@CurrentFlag", Convert.ToInt32(TextBox11.Text)); 
      xp.Parameters.AddWithValue("@ModifiedDate", Convert.ToDateTime(TextBox12.Text)); 

      try 
      { 
       vid.Open(); 
       xp.ExecuteNonQuery(); 
      } 
      catch 
      { 
       vid.Close(); 
      } 

      if (IsPostBack) 
      { 
       TextBox1.Text = ""; 
       TextBox2.Text = ""; 
       TextBox3.Text = ""; 
       TextBox4.Text = ""; 
       TextBox5.Text = ""; 
       TextBox6.Text = ""; 
       TextBox7.Text = ""; 
       TextBox8.Text = ""; 
       TextBox9.Text = ""; 
       TextBox10.Text = ""; 
       TextBox11.Text = ""; 
       TextBox12.Text = ""; 
      } 
     } 
    } 
} 
+0

是SQL服务器上的命令?你的列类型到底是什么?如何尝试使用'Add'方法添加参数并指定它的类型和大小? ['AddWihValue' _might_有时会产生意外的结果](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/)并使用'using'语句自动处理连接和命令,而不是手动调用'Close'方法。 –

+0

您是否尝试过通过ssms或sqlcmd运行查询?它是否工作,然后,什么都不做或给出错误信息? – BeanFrog

+2

'1.使用事务和异常处理''2。使用Sql Profiler来跟踪发送给SQL Server的值。 –

回答

0

试试这个

using(SqlConnection vid = new SqlConnection("Data Source=JOSAN;Initial Catalog=AdventureWorks2012;Integrated Security=True")) 
{ 
    using(SqlCommand xp = new SqlCommand()) 
    { 
     xp.CommandText = @"Insert into HumanResources.Employee(NationalIDNumber, LoginID, JobTitle, BirthDate, MaritalStatus, Gender, HireDate, SalariedFlag, VacationHours, SickLeaveHours, CurrentFlag, ModifiedDate) Values(@NationalIDNumber, @loginID, @JobTitle, @BirthDate, @MaritalStatus, @Gender, @HireDate, @SalariedFlag, @VacationHours, @SickLeaveHours, @CurrentFlag, @ModifiedDate)"; 
     xp.Connection = vid; 
    xp.Parameters.AddWithValue("@NationalIDNumber", TextBox1.Text); 
    xp.Parameters.AddWithValue("@LoginID", TextBox2.Text); 
    xp.Parameters.AddWithValue("@JobTitle", TextBox3.Text); 
    xp.Parameters.AddWithValue("@BirthDate", TextBox4.Text); 
    xp.Parameters.AddWithValue("@MaritalStatus", Convert.ToChar(TextBox5.Text); 
    xp.Parameters.AddWithValue("@Gender", TextBox6.Text); 
    xp.Parameters.AddWithValue("@HireDate", TextBox7.Text); 
    xp.Parameters.AddWithValue("@SalariedFlag", TextBox8.Text); 
    xp.Parameters.AddWithValue("@VacationHours", TextBox9.Text); 
    xp.Parameters.AddWithValue("@SickLeaveHours", TextBox10.Text); 
    xp.Parameters.AddWithValue("@CurrentFlag", TextBox11.Text); 
    xp.Parameters.AddWithValue("@ModifiedDate", TextBox12.Text); 
     try 
     { 
      vid.Open(); 
      xp.ExecuteNonQuery(); 
     } 
     catch 
     { 
      MessgeBox.Show(e.Message.ToString(), "Error Message"); 
      vid.Close(); 
     } 
     if (IsPostBack) 
     { 
      TextBox1.Text = ""; 
      TextBox2.Text = ""; 
      TextBox3.Text = ""; 
      TextBox4.Text = ""; 
      TextBox5.Text = ""; 
      TextBox6.Text = ""; 
      TextBox7.Text = ""; 
      TextBox8.Text = ""; 
      TextBox9.Text = ""; 
      TextBox10.Text = ""; 
      TextBox11.Text = ""; 
      TextBox12.Text = ""; 
     } 
    } 
} 

编辑

您可以使用隐式转换AddWithValue并更改声明这样

xp.Parameters.AddWithValue("@NationalIDNumber", TextBox1.Text); 
xp.Parameters.AddWithValue("@LoginID", TextBox2.Text); 
xp.Parameters.AddWithValue("@JobTitle", TextBox3.Text); 
xp.Parameters.AddWithValue("@BirthDate", TextBox4.Text); 
xp.Parameters.AddWithValue("@MaritalStatus", Convert.ToChar(TextBox5.Text); 
xp.Parameters.AddWithValue("@Gender", TextBox6.Text); 
xp.Parameters.AddWithValue("@HireDate", TextBox7.Text); 
xp.Parameters.AddWithValue("@SalariedFlag", TextBox8.Text); 
xp.Parameters.AddWithValue("@VacationHours", TextBox9.Text); 
xp.Parameters.AddWithValue("@SickLeaveHours", TextBox10.Text); 
xp.Parameters.AddWithValue("@CurrentFlag", TextBox11.Text); 
xp.Parameters.AddWithValue("@ModifiedDate", TextBox12.Text); 
+1

为什么你认为在命令上使用逐字串会改变什么?它不会包含任何转义字符。 –

+0

@SonerGönül:谢谢你的通知。让我改变它 –

相关问题