【问题标题】:Invalid Object Name in ExecuteNonQueryExecuteNonQuery 中的对象名称无效
【发布时间】:2014-03-10 00:09:20
【问题描述】:

我目前正在尝试开发一个应用程序,让您在课堂上跟踪您的支出。但是我遇到了错误“无效的对象名称'dbo.AccTransactions”

我的 Windows 窗体代码:

    string command = "Insert INTO dbo.AccTransactions (id, transact_id, payee, dateof, amount, category)"
                            + "Values (@id, @transact_id, @payee, @dateof, @amount, @category)";
        SqlCommand cmd = new SqlCommand(command, con);
        cmd.Parameters.AddWithValue("@id", 1);
        cmd.Parameters.AddWithValue("@transact_id", 2);
        cmd.Parameters.AddWithValue("@payee", payeeTextBox.Text);
        cmd.Parameters.AddWithValue("@dateof", DateTime.Today);
        cmd.Parameters.AddWithValue("@amount", Convert.ToDecimal(amountTextBox.Text));
        cmd.Parameters.AddWithValue("@category", categoryTextBox.Text);

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

我的连接字符串:

     SqlConnection con = new SqlConnection(@"Data Source=IVY\SQLEXPRESS;Initial Catalog=BudgetTracker;Integrated Security=SSPI;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False");

我的数据库有“dbo.AccTransactions”表,它在 SSMS 中表现完美。

任何帮助都会很棒!

【问题讨论】:

  • 可能是权限问题。如果您使用的是 sql server 用户帐户,则应更改连接字符串,或添加 Windows 帐户登录。确保grant select, insert, update, delete on dbo.AccTransactions to [<Your Domain>\<your user name>];
  • 您的连接字符串中是否缺少“初始目录”?您使用的是什么版本的 SQL Server?
  • @achuthakrishnan 我使用的是 SQL Server 2012,但我不这么认为。你能解释一下吗?
  • 我相信@achuthakrishnan 的意思是您的连接字符串中缺少Initial Catalog=myDataBase;。当您尝试访问您的表时,连接默认为master 数据库。看看这里connectionstrings.com/sql-server-2012

标签: c# sqlconnection


【解决方案1】:

我猜您在连接字符串中缺少数据库名称。

SqlConnection con = new SqlConnection(@"Data Source=IVY\SQLEXPRESS;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False");

通过将您的数据库名称放在以下字符串中来尝试。

 SqlConnection con = new SqlConnection(@"Data Source=IVY\SQLEXPRESS; Initial Catalog=YOUR_DATABASE_NAME;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False");

【讨论】:

    【解决方案2】:

    请检查运行您的程序的用户是否有权访问该表。很可能您需要将用户设置为 dbo,因为您以 dbo.AccTransactions 访问表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 2018-06-15
      • 1970-01-01
      • 2018-02-27
      相关资源
      最近更新 更多