当前位置:编程学习 > C#/ASP.NET >>

请大家看看我这个插入为什么会不成功啊

SqlCeConnection cecon = new SqlCeConnection("Data Source=" + @"PDADATE.sdf");
            SqlCeCommand cecom = new SqlCeCommand();
            cecom.Connection = cecon;
            try
            {
                cecon.Open();
                cecom.CommandText = "insert into MyInfo(name,age,address) values(@name,@age,@address)";
                cecom.Parameters.Add("@name", txtname.Text);
                cecom.Parameters.Add("@age", txtage.Text);
                cecom.Parameters.Add("@address", txtaddress.Text);
                int com = cecom.ExecuteNonQuery();
                if (com > 0)
                {
                    MessageBox.Show("插入数据成功", "成功");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                cecon.Close();
            }
这是我的插入数据库的代码
总是执行不成功
调试看了,执行到if那里就停止调试了
就说失去设备,有谁知道这是什么原因不?会不会是.sdf文件访问不到呢,我的.sdf文件是用一个类来创建的
请告诉我,谢谢!!! --------------------编程问答--------------------
Data Source=" + @"PDADATE.sdf"这连接数据库字符串应该不对吧,还有sql数据库的?应该是.mdf结尾的
应该类似Data Source=(local);Initial Catalog=ABC;User ID=sa;Password= --------------------编程问答--------------------   int com = cecom.ExecuteNonQuery(); 
你的存储过程有返回值吗? --------------------编程问答-------------------- 你没用存储过程直接用cecom.ExecuteNonQuery(); 然后在 if (com > 0) 
                { 
                    MessageBox.Show("插入数据成功", "成功"); 
                } 
是错误的写法,当然执行到if那里就停止调试了 ,你的条件是不成立的,就跳过了。 --------------------编程问答-------------------- 应该就是那个错误吧!
再试试! --------------------编程问答-------------------- 但是cecom.ExecuteNonQuery(); 然后在 if (com > 0) 
                { 
                    MessageBox.Show("插入数据成功", "成功"); 
                } 
ExecuteNonQuery这个是插入执行时要用的大方法啊
语法哪里错了 --------------------编程问答-------------------- 你用短点看下com是不是大过一 --------------------编程问答-------------------- 那位高手可以指点下不,第一次接触PDA开发,好多语法都不懂:可以的话请加我QQ:673694677 --------------------编程问答-------------------- 它的错误提示是什么啊?sdf文件是什么数据库的啊? --------------------编程问答--------------------


cecom.CommandText = "insert into MyInfo(name,age,address) values(@name,@age,@address)"; 
改为:

cecom.CommandText = "insert into MyInfo([name],age,address) values(@name,@age,@address)"; 



因为name是sql关键字 --------------------编程问答--------------------
引用 9 楼 mqc507 的回复:
C# code

cecom.CommandText = "insert into MyInfo(name,age,address) values(@name,@age,@address)"; 
改为:

cecom.CommandText = "insert into MyInfo([name],age,address) values(@name,@age,@address)"; 





因为name是sql关键字

.... --------------------编程问答-------------------- 链接正确,代码正确,提示“失去设备”——————

查看你的连接指向,就是说看一下,你的连接上有没有MyInfo表所在的数据库,如果数据库存在,查看当前链接到的数据库上有没有MyInfo表

在数据库里应该属于找不到对象这样的错误吧

你检查一下,再试


--------------------编程问答-------------------- 我查询可以把数据查出来啊
添加数据的时候就不行了 --------------------编程问答-------------------- 好像少了一句
comm.CommandType = CommandType.StoredProcedure; --------------------编程问答-------------------- 这么做性能很差,把数据封装成一个层来调用这样会避免很多问题 --------------------编程问答-------------------- 是不是要加事务?这方面没看过,但我刚刚看了下这段代码

SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf; Password ='<pwd>'");
conn.Open();

// Start a local transaction
//
SqlCeTransaction tx = conn.BeginTransaction();

// By default, commands run in auto-commit mode; 
//
SqlCeCommand cmd1 = conn.CreateCommand();

// You may create multiple commands on the same connection
//
SqlCeCommand cmd2 = conn.CreateCommand();

// To enlist a command in a transaction, set the Transaction property
//
cmd1.Transaction = tx;

try
{
    cmd1.CommandText = "INSERT INTO Shippers ([Company Name]) VALUES ('Northwind Traders')";
    cmd1.ExecuteNonQuery();

    // Auto-commited because cmd2 is not enlisted in a transaction
    //
    cmd2.CommandText = "INSERT INTO Employees ([Last Name], [First Name]) VALUES ('Nancy', 'Smith')";
    cmd2.ExecuteNonQuery();

    // This will cause referential constraint violation
    //
    cmd1.CommandText = "DELETE FROM Products WHERE [Product ID] = 1";
    cmd1.ExecuteNonQuery();

    // Commit the changes to disk if everything above succeeded
    //
    tx.Commit();
}
catch (Exception)
{
    tx.Rollback();
}
finally
{
    conn.Close();
}
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,