2012-11-26 59 views
0

我想为SQL Server CE数据库编写一个简单的插入语句,并且我的代码完美地工作! ......除了该行实际上并没有得到插入到数据库...SqlCeCommand简单插入不插入

我的代码是:

public static int InsertTourCreater(string userName, string password) 
{ 
    SqlCeConnection connection = GuidedTourDB.GetConnection(); //Returns connection 
    string insertStatement = 
      "INSERT INTO [Tb_Creater] " + 
      "([User_Name], [Password]) " + 
      "VALUES (@UserName, @Password)" ; 
    SqlCeCommand insertCommand = new SqlCeCommand(insertStatement, connection); 
    insertCommand.Parameters.Add(new SqlCeParameter("@UserName", SqlDbType.NVarChar)).Value = userName; 
    insertCommand.Parameters.Add(new SqlCeParameter("@Password", SqlDbType.NVarChar)).Value = password; 

    try 
    { 
     connection.Open(); 
     int success = insertCommand.ExecuteNonQuery(); 
     return success; 
    } 

代码运行正常。通过在调试模式下步,打开连接,价值观都得到正确添加,与1 ExecuteNonQuery()回报价值,但后来我去看看表数据Tb_Creater在我的服务器资源管理器,记录是不存在的。

我已经刷新,甚至重新启动Visual Studio中。不在那里。没有例外被抛出。

注意:我添加的参数是这样的,而不是AddWithValue(),因为我担心字符串会转换为varchar(在SQL Server CE中不可用),并且会导致问题,但是代码操作同样的方式。

+0

你能告诉我们你的连接字符串吗? –

+0

为了进一步混淆我,我得到'不能插入重复值'异常,如果我尝试使用已存在的User_Name的值。 (这是一个独特的领域。) ,如果我过去我的INSERT语句为T-SQL编辑器和更换硬编码值的变量,它运行良好,所以它不应该是一个语法错误.. –

+0

私有静态字符串connectionString = @“Data Source = | DataDirectory | \ GuidedTourDB.sdf; Password = password”; 公共静态的SqlCeConnection的getConnection() { 的SqlCeConnection连接=新的SqlCeConnection(的connectionString); 返回连接; } 编辑:对不起,我不知道如何粘贴评论代码...我有一个SELECT语句命令工作正常使用相同的连接。 –

回答

0

我碰巧遇到了这个问题并解决了。进入您的调试输出路径并使用管理员模式运行您的应用程序(exe)。因为我看到了日志消息,表示您无法访问sdf文件。其实没有任何错误在Visual Studio中弹出。