我如何使用SclCeCommand和ExecuteNonQuery方法错误?

时间:2013-12-03 20:48:13

标签: c# sql sql-server-ce

我正在尝试在我的Admin类(对于一个小课程项目)中创建一个方法,该方法应该INSERT一部新电影进入我的数据库。

我没有收到任何错误,但新数据未插入数据库。 这是我的代码:

public void AddMovieToDB(int mCodeLable, string title, int yearOfMovie, int lengthInMinutes, string dvdOrVhs, string genreOfMovie)
        {
            int movieCodeLable = mCodeLable;
            string movieTitle = title;
            int year = yearOfMovie;
            int length = lengthInMinutes;
            string typeOf = dvdOrVhs;
            string genre = genreOfMovie;

            string connectionString = @"Data Source=|DataDirectory|\VideoStoreDB.sdf";            
            SqlCeConnection connection = new SqlCeConnection(connectionString);

            connection.Open();

            SqlCeCommand command = new SqlCeCommand(
            "INSERT INTO Movie(MovieCodeLable, Title, Year, 
            LengthMinutes, TypeOf, Genre) 
            VALUES(@mcl, @title, @year, @length, @typeOf, @genre)", connection);

            command.Parameters.AddWithValue("@mcl", movieCodeLable);
            command.Parameters.AddWithValue("@title", movieTitle);
            command.Parameters.AddWithValue("@year", year);
            command.Parameters.AddWithValue("@length", length);
            command.Parameters.AddWithValue("@typeOf", typeOf);
            command.Parameters.AddWithValue("@genre", genre);

            command.ExecuteNonQuery();
            connection.Close();

            Console.WriteLine("Movie added to the DB!");
        }

这就是我从主叫它的方式:

Admin admin1 = new Admin();
admin1.AddMovieToDB(0151, "Play ball!", 2012, 124, "DVD", "Drama");

1 个答案:

答案 0 :(得分:2)

这是一种可能的情况。

您的连接字符串使用|DataDirectory|。这意味着在RUNTIME内部,在VS调试会话中,替换字符串指向文件夹BIN\DEBUG,其中包含VS在启动调试会话时复制的文件sdf(检查属性Copy to Output directory以获取sdf文件)。

插件工作完美无缺。 (您可以检查查看ExecuteNonQuery()的返回值)。

您停止调试并使用服务器资源管理器检查表的内容,但您找不到任何内容。

唯一的问题是服务器资源管理器窗口使用的指向不同数据库的连接。项目文件夹中的那个。

我建议在Server Explorer上创建两个连接。保留当前的一个(因此这个数据库是您准备与应用程序一起部署的主要空副本)并添加指向PROJECTFOLDER \ BIN \ DEBUG中的数据库的另一个连接,其中找到调试会话期间使用的数据库(右键单击“添加连接”,选择“Sql Server Compact Edition”并浏览到“BIN \ DEBUG”文件夹)