请大家看看我这个插入为什么会不成功啊
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关键字 --------------------编程问答--------------------
.... --------------------编程问答-------------------- 链接正确,代码正确,提示“失去设备”——————
查看你的连接指向,就是说看一下,你的连接上有没有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