我似乎无法将记录添加到 Visual Studio 中的数据库

Posted

技术标签:

【中文标题】我似乎无法将记录添加到 Visual Studio 中的数据库【英文标题】:I can't seem to add the records to my database inside Visual Studio 【发布时间】:2014-11-12 23:58:42 【问题描述】:

您好,我是 C# 和 SQL 的新手。但我的问题是 SQL 我试图连接到我在 Visual Studio 2010 上创建的数据库。它让我无法将 vachar 转换为浮点数。这是代码。

private void execute()

     ///Here we atempt to connect to the local DB
     System.Data.SqlClient.SqlConnection SqlConnection1 = new   
     System.Data.SqlClient.SqlConnection(@"Data 
     Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated 
     Security=True;User Instance=True");
     SqlConnection1.Open();
     System.Data.SqlClient.SqlTransaction tx = SqlConnection1.BeginTransaction();
     System.Data.SqlClient.SqlCommand cmd = SqlConnection1.CreateCommand();
     cmd.Transaction = tx;
     ///Here we try to operate on the Local DB
     try
                     
          cmd.CommandText = "INSERT INTO EmployeeInfo(EmployeeSalary,EmployeePhone,EmployeeDeskPhone,EmployeeSSN,EmployeeEmergencyContactName,EmployeeEmergencyContactPhone,EmployeeFirstName,EmployeeLastName) VALUES  
            (@_employeeSalary,'@_employeePhone','@_employeeDeskPhone','@_employeeSSN','@_employeeEmergencyContactName','@_employeeEmergencyContactPhone','@_employeeFirstName','@_employeLastName')";
          cmd.Parameters.AddWithValue("@_employeeSalary", _employeeSalary);
          cmd.Parameters.AddWithValue("@_employeePhone", _employeePhone);
          cmd.Parameters.AddWithValue("@_employeeDeskPhone", _employeeDeskPhone);
          cmd.Parameters.AddWithValue("@_employeeSSN", _employeeSSN);
          cmd.Parameters.AddWithValue("@_employeeEmergencyContactName",  
            _employeeEmergencyContactName);
          cmd.Parameters.AddWithValue("@_employeeEmergencyContactPhone", 
            _employeeEmergencyContactPhone);
          cmd.Parameters.AddWithValue("@_employeeFirstName", _employeeFirstName);
          cmd.Parameters.AddWithValue("@_employeeLastName", _employeeLastName);
          cmd.ExecuteNonQuery();
          tx.Commit();
     
     ///If unsuccesful we rollback changes 
     catch (System.Data.SqlClient.SqlException sqlException)
     
          System.Windows.Forms.MessageBox.Show(sqlException.Message);
          tx.Rollback();
          Console.WriteLine("**** There was Trouble Houston, with the Insert****");
     
     ///Thhis piee of code always executes
     finally
     
          SqlConnection1.Close();
          Console.WriteLine("***** if theres no trouble before this,  then It succesfully added the record to the database*****");
      

变量 emplyeeSalary 设置为浮动并且是唯一的变量,所以我不明白为什么它会传递该消息。 请任何帮助将不胜感激。

【问题讨论】:

停止,停止,停止使用用户实例和 AttachDbFileName。将您的数据库附加到适当的 SQL Server 实例,并按数据库名称连接,而不是通过 MDF 文件。您当前的方法已被弃用,并且当您更新程序中的某些内容并且在 SSMS 或程序的另一个实例中看不到它时,还会导致调试问题 - 这是因为它们具有数据库的不同副本 . 哦,好的,非常感谢,因为我说我对 sql 真的很陌生,而且我从这里开始做一些旧的 Q/A :)。感谢您的意见,请您通过一些链接或一些特定术语为我指明正确的方向,以便我谷歌并了解。我几乎不明白你在那里使用的术语,那是我的错 ***.com/questions/11178720/… 感谢 aaron 我非常感谢它 我喜欢为我的参数设置明确的数据类型/精度/比例,而不是让命令对象根据参数的值来推断它。 【参考方案1】:

您的问题很简单,出于某种原因,您将命令参数放在单引号内。将它们更改为以下内容:

cmd.CommandText = @"INSERT INTO 
  EmployeeInfo( EmployeeSalary ,EmployeePhone, EmployeeDeskPhone, EmployeeSSN,
  EmployeeEmergencyContactName, EmployeeEmergencyContactPhone, EmployeeFirstName,
  EmployeeLastName) VALUES  
  (@_employeeSalary,@_employeePhone,@_employeeDeskPhone,@_employeeSSN,
   @_employeeEmergencyContactName,@_employeeEmergencyContactPhone,
   @_employeeFirstName, @_employeLastName)";

【讨论】:

非常感谢,尽管数据没有永久插入到数据库中,但 try/catch 似乎没有错误,它只是为了程序运行时的目的而插入它还是这里还有其他事情发生...... 如果没有错误,那么它应该已经永久插入了数据,你可能需要重新查询你的表来确定。

以上是关于我似乎无法将记录添加到 Visual Studio 中的数据库的主要内容,如果未能解决你的问题,请参考以下文章

似乎无法忽略 Visual Studio 2010 中的库

无法在 C#.Net 4.0 Visual Studio 中添加对 rzdcx.DLL 的引用

Visual Studio:无法将ATL类添加到ATL项目中?

Visual Studio Ultimate 负载测试 - 无法添加 Web 性能测试

无法在 Visual Studio 2013 中添加数据库文件。错误 50

如何将本地数据库文件添加到 Visual Studio Mac 2017