不会将附加值保存到数据库中

时间:2014-11-14 19:12:23

标签: c# sql-server database visual-studio-2013

在Visual Studio(2013)中,我在项目中添加了基于服务的数据库(Database1.mdf)。我在其中添加了一个表,并通过Show Data Table添加了两行。从数据库读取数据可根据需要工作。但是增加数据库的价值存在问题。如果我在程序运行时向数据库添加值,然后按“读取数据”就可以了,数据正在读取。但是,如果我在程序仍在运行时转到“显示数据表”并按下“更新”按钮,则会收到错误消息:“此数据库无法导入。它是不受支持的SQL Server版本或不支持的数据库兼容性”。

如果我按下“SQL Server对象资源管理器”中的“更新”按钮,然后转到“显示数据表”并按“更新”按钮,则数据会更新,但不会添加数据。此外,在程序完成后,没有添加数据。

为什么?

我尝试将“复制到输出目录”属性从“始终复制”更改为“不复制”或“如果更新则复制”。但它没有帮助我。请帮帮我

阅读数据:

string strConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\Database.mdf;Integrated Security=True";
                using (SqlConnection con = new SqlConnection(strConnectionString))
                {
                    try
                    {
                        SqlCommand command = new SqlCommand("SELECT [Login] FROM [UsersTable];", con);
                        con.Open();
                        SqlDataReader reader = command.ExecuteReader();

                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                label1.Text = "Last value: " + reader.GetString(0);
                            }
                        }
                    }
                    catch (SqlException ex)
                    {
                    }

添加数据:

string strConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\Database.mdf;Integrated Security=True";
            using (SqlConnection con2 = new SqlConnection(strConnectionString))
            {
                using (SqlCommand command2 = new SqlCommand())
                {
                    command2.Connection = con2;
                    command2.CommandType = CommandType.Text;
                    command2.CommandText = "INSERT INTO [UsersTable] ([Login], [Password]) VALUES (@Login, @Password)";
                    command2.Parameters.AddWithValue("@Login", textLogin.Text);
                    command2.Parameters.AddWithValue("@Password", textPassword.Text);

                    try
                    {
                        con2.Open();
                        command2.ExecuteNonQuery();
                    }
                    catch (SqlException)
                    {
                        // error here
                    }
                    finally
                    {
                        con2.Close();
                    }
                }
            }

1 个答案:

答案 0 :(得分:0)

<强>更新


也许这个例子不足以让你

private void SubmitNote(string message)
{
     // Ensure parameter isn't null.
     if(string.IsNullOrEmpty(message))
          return;

      // Our Insert Query:
      string insert = @"INSERT INTO [Notes] ([Username], [Date], [Message])
                              VALUES (@Username, @Date, @Message);";

     // Define our Connection & Command:
     using(SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString))
          using(SqlCommand command =  new SqlCommand(insert, connection))
          {
                // Open Connection
                connection.Open();

                // Define our Command (AddWithValue / Add Approach)
                command.Parameters.Add("@Username", SqlDbType.VarChar, 50).Values = User.Identity.Name;
                command.Parameters.AddWithValue("@Date", DateTime.Now);
                command.Parameters.Add("@Message", SqlDbType.VarChar).Value = message;

                // Execute Query:
                command.ExecuteNonQuery();
          }
}

因此,无论何时我想向数据库插入消息,我只需致电:

SubmitNote("What is love, baby don't hurt me.");

假设参数和连接有效,那将执行没有任何问题。您可以编写一个异常帮助程序,但这超出了您的问题范围。您可能遇到的问题之一是:

  • 参数可以是 Null
  • 命令文本
  • 中的问题
  • 连接字符串的潜在问题。

根据您提到的问题,值为 Null ,这意味着它不包含有效值。例如,如果你这样做:

String message = String.Empty;
SubmitNote(message);

那会失败,因为消息没有值。希望这会有所帮助。