sqlite数据库在使用时遇到的奇葩问题记录讲解学习

上传人:go****e 文档编号:137415821 上传时间:2020-07-08 格式:DOC 页数:11 大小:495.50KB
返回 下载 相关 举报
sqlite数据库在使用时遇到的奇葩问题记录讲解学习_第1页
第1页 / 共11页
sqlite数据库在使用时遇到的奇葩问题记录讲解学习_第2页
第2页 / 共11页
sqlite数据库在使用时遇到的奇葩问题记录讲解学习_第3页
第3页 / 共11页
sqlite数据库在使用时遇到的奇葩问题记录讲解学习_第4页
第4页 / 共11页
sqlite数据库在使用时遇到的奇葩问题记录讲解学习_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《sqlite数据库在使用时遇到的奇葩问题记录讲解学习》由会员分享,可在线阅读,更多相关《sqlite数据库在使用时遇到的奇葩问题记录讲解学习(11页珍藏版)》请在金锄头文库上搜索。

1、sqlite数据库在使用时遇到的奇葩问题记录精品文档sqlite数据库在使用时遇到的奇葩问题记录有时候做些简单的项目一般都会选择sqlite数据库,优点有很多,这里就不详细说了。在此主要记录一些平时在使用时遇到的问题及解决方法。希望能对大家有所帮助。-一:sqlite一直提示 the database file is locked解决:-二:错误提示-混合模式程序集是针对v2.0.解决:-三:在IIS中发布网站程序时,如果操作系统是64位的,有时候会出现访问错误的问题,这时可以将应用程序高级设置中的“启用32位应用程序”设置项改为True,再测试是否成功。(如果“启用32位应用程序项为True

2、” 时网站提示下面的错误黄页,则可以将该项设置为False试试看。2014-5-24 更新:今天在测试一个网站时,发现在True的情况下网站报错,则将该项切换为了False,则可以访问了。至于如何来解释这种问题,待研究。)这种情况的一种错误现象是:在IIS中发布使用sqlite数据库的网站项目时,配置好IIS后访问,页面可能就是显示下面的:这时就需要你去修改应用程序池的模式了:-四:使用sql语句插入当前时间在sqlserver中,如果在操作数据时需要插入当前时间的情况,可以使用 GETDATE()来插入,而在sqlite中则不同:INSERT INTO MWaitPlayList(Msong

3、id,Mtitle,Mauthor,Mtime) VALUES(songid,title,author,datetime(now, localtime)要用datetime(now,localtime)来插入。项目实例: #region 将歌曲添加到待播放列表中 / / 将歌曲添加到待播放列表中 / / 歌曲id / 歌曲名 / 歌手 / public static bool XMusicAddtoWaitList(long songid, string songtitle, string songauthor) string sql = INSERT INTO MWaitPlayList(M

4、songid,Mtitle,Mauthor,Mtime) VALUES(songid,title,author,datetime(now,localtime); SQLiteParameter parameter = new SQLiteParameter(songid,DbType.Int64), new SQLiteParameter(title,DbType.String,200), new SQLiteParameter(author,DbType.String,200) ; parameter0.Value = songid; parameter1.Value = songtitle

5、; parameter2.Value = songauthor; int row = ZXSQLiteHelper.ExecuteSql(sql, parameter); if (row 0) return true; else return false; -五. 数据库配置Web.Config或App.Config文件中的设置: 数据库文件要放在App_Data文件夹中:-六.SQLite中获取最新添加自增ID,last_insert_rowid()的使用今天在用sqlite数据库时,想要在新插入数据的同时获取自增的id值,从网上找了找,发现可以用last_insert_rowid() 这个

6、函数来获取,但是在sql语句中执行时却一直返回0。于是又在网上找到了一个相关的文章,经测试可行。遂记录一下。出现上面所提问题的主要原因是“last_insert_rowid()” 函数必须要和insert语句一起使用,说的再明白点,就是必须是由同一个“SQLiteConnection” 来操作。修改后的sqliteHelper : / / 执行插入语句,并获取最新的一条数据的id / / / / public static long ExecuteGetInsertId(string SQLString, params SQLiteParameter cmdParms) using (SQLi

7、teConnection connection = new SQLiteConnection(connectionString) using (SQLiteCommand cmd = new SQLiteCommand() long result = 0; try PrepareCommand(cmd, connection, null, SQLString, cmdParms); /result = cmd.ExecuteNonQuery(); /查询 select用executeScalar() ,如果用executeNonQuery返回的永远是1. 这里由于肯定能转换为数字 ,所以可以直

8、接转换 result = Convert.ToInt64(cmd.ExecuteScalar(); cmd.Parameters.Clear(); catch (System.Data.SQLite.SQLiteException E) result = -1; throw new Exception(E.Message); return result; sql语句: string sql = INSERT INTO UMembers(QId,UName,UPwd,UEmail,UPhoto,UTime) VALUES (5,uname,upwd,uemail,uphoto,datetime(

9、now,localtime);SELECT last_insert_rowid() from UMembers; -参考:今天在我的数据类中给Add方法完善一下.想要实现添加之后返回添加的实体的自增ID,遂想起了select last_insert_rowid(),可是用了之后就是不好使,各种返回0,后来经度娘指教,我发现一句话在同一个SQLiteConnection中.,原来如此.修改代码,搞定!我之前是这么写的DBHelperSQLite.ExecuteSql(sql,parameters);return Convert.ToInt32(DBHelperSQLite.GetSingle(select last_insert_rowid();注意:由于我的DBHelper写法的原因,这样的话就变成了两个SQLiteConnection改进后return DBHelperSQLite.ExecuteSql(sql+ ;select last_insert_rowid();, param

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号