求助:请牛人帮忙看下为什么不能对数据库进行操作

.Net技术 码拜 9年前 (2015-07-18) 1119次浏览 0个评论

 public partial class Screen1
    {
public static string sPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase.ToString());
public const string FILENAME = “\Database.sdf”;
public static SqlCeConnection SqlCeCon;
void Button_Click(System.Object sender, System.EventArgs e)
{
string sCeConStr = Screen1.sPath + Screen1.FILENAME;
Screen1.SqlCeCon = new SqlCeConnection(“Data Source =” + sCeConStr);
Screen1.SqlCeCon.Open();
MessageBox.Show(“database connect succeed!”);//程序运行到这里是OK的,就是说连接数据库没问题,但执行下面数据库操作语句时出错。移动设备自动重启,移动设备为WINCE系统。用的是C#编程。
SqlCeCommand TemClear=new SqlCeCommand(“Delete tem”,SqlCeCon);
SqlCeCommand TemInsert=new SqlCeCommand(@”insert into tem(Time,LogItem1) select Time,
LogItem1 from DataLogger1Where id=”””+Globals.Tags.Tag1.Value+””””,SqlCeCon);
TemClear.ExecuteNonQuery();
TemInsert.ExecuteNonQuery();

}

#1

你倒是说  什么错

#2

@#1  就是设备自动重启,没有错误提示

#3

不出异常怎么会重启呢!
我不知道你是不是将源码直接拷贝过来的,但你查询语句这儿“DataLogger1Where”怎么写连起来了?

#5

@ajianchina
 不是那里的问题,有空格也不行。谢谢你的回答啊!  我试过很多数据库执行语句,为什么都不能正常执行呢?比如用
try{SqlCeCommand TemClear=new SqlCeCommand(“Delete tem”,SqlCeCon);
         TemClear.ExecuteNonQuery();}
catch(SqlCeException)
{”Attention:Failed to execute SQL statements!”}   每次都是显示连接成功,点OK后显示Attention:Failed to execute SQL statements!

这个很让人苦恼啊 ,看了很多资料,都是正常的数据库执行语句啊。

20分

#6

你这一句public static string sPath = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase.ToString()
应该取得程序集的url,得出的结果应该类似于file:///x:/ab/cd/de.exe,
然后你的public const string FILENAME = “\Database.sdf”;
结果取得string sCeConStr = Screen1.sPath + Screen1.FILENAME;
这两句拼起来取得的将是file:///x:/ab/cd/de.exe/Database.sdf这样的结果,这样对吗?

#7

@ajianchina 
对啊!这个影响了数据库操作语句?

#8

我没有wince的开发经验,不过你自己先通过修改文件路径的获取方式后进行测试看看

#9

@ajianchina 
你的意思是说有可能是路径的问题?  那好吧,我试试。谢谢你哈。
20分

#10

catch(SqlCeException)
{”Attention:Failed to execute SQL statements!”}

不要这样写,你这样将错误信息隐藏起来,只显示个失败,就没有办法调试了

改成这样:

catch(SqlCeException ex)
{
ex.ToString();
}

#11

@Z65443344
谢谢你的回复,改了你的程序后就是什么都不显示了。你的这段程序是如果有报错会显示出来吗?

#12

SqlCeCommand TemClear=new SqlCeCommand(“Delete tem”,SqlCeCon);
应该是Screen1.SqlCeCon 吗?

#13

@拜一刀
不是。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求助:请牛人帮忙看下为什么不能对数据库进行操作
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!