我正在尝试在我的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");
答案 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”文件夹)