免费网站奖励自己游戏学编程的步骤
news/
2025/9/23 11:01:16/
文章来源:
免费网站奖励自己游戏,学编程的步骤,免费推广网站2023mmm,采购网站建设ASP.net与SQLite数据库通过js和ashx交互(连接和操作)#xff1a;废话(也是思路)#xff1a;用的是VS2010#xff0c;打算做网站前后台。由于不喜欢前台语言里加些与html和css和js的其他内容#xff0c;想实现前后台语言的分离#xff0c;与前后台通过js的ajax实现交互废话(也是思路)用的是VS2010打算做网站前后台。由于不喜欢前台语言里加些与html和css和js的其他内容想实现前后台语言的分离与前后台通过js的ajax实现交互故很多百度出来的方法不成立虽听说ashx过时但是他实现了我要的效果即前后台语言不是相互嵌入实现交互而是通过js实现(有接口就可以)。由于领导指定用SQLite故这两天还折腾了SQLite不过对于这种小型的网站它是个很好的选择(不需要部署只需在官网下载.net的然后在项目中引用在Web.config里进行设置即可操作——当然还有一些错误和注意事项要注意)总的说来我用ashx和js的ajax实现前后台的交互后台与SQLite数据库连接——1.通过引用System.Data.SQLite.dll2.在界面主文件夹下添加SQLite.Interop.dll为链接3.Web.config文件配置4.SQLiteHelper.cs编写ashx调用执行(可划分DAL进行分类建cs便于管理)。好处实现前后台语言的分离不用部署不用曾经的SQLSERVER 的Model(get和set组成的东西)即可完成数据读写(此处不管连接SQLSERVER的ADO)——暂时想到也知道这么一点仅供参考。正文一、ashx和js的ajax实现前后台的交互文件路径如图一js会在product.html里引用故连接ashx的路径是相对product.html的路径js代码如下1 $(document).ready(function() {2 $.ajax({3 url: ../InterSQLite/demo.ashx,4 type: post,5 datatype: json,6 cache: false,7 async: false,8 success: function(data) {9 alert(data);10 }11 })12 })ashx代码如下(主要起作用的是context.Response.Write(strjson);)1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Web;56 namespaceMvcAdmin.InterSQLite7 {8 /// 9 ///demo 的摘要说明10 /// 11 public classdemo : IHttpHandler12 {1314 public voidProcessRequest(HttpContext context)15 {16 //string strjson [ {\userName\:\test\}];17 context.Response.ContentType text/plain;18 string str2 测试;19 //string strjson [ {\userName\:\test\}];20 string strjson [ {\userName\:\ str2 \}];21 context.Response.Write(strjson);22 }2324 public boolIsReusable25 {26 get27 {28 return false;29 }30 }31 }32 }这一部分请注意1.发布要在本地(我测试的发布在别的服务器前台接收不到)2.IIS配置(打开本机的IIS——配置)二、后台与SQLite数据库连接1.通过引用System.Data.SQLite.dll安装后有个测试的点击(如下图1)选择“System.Data.SQLite”(默认的)改变“Data Source已建好的SQLite数据库.db文件相对刚刚安装的bin目录的路径”(例如我安装的bin目录是C:\Program Files (x86)\System.Data.SQLite\2010\bin我的数据库文件在C:\cff\test下则我的Data Source../../../../cff/test/test.db)改好后点击“run”如下图2则说明安装成功此处个人碰到一个问题需要为数据库所在的上层目录设置权限才能全部Succeeded。错误如下attempt to write a readonly datebase解决办法找到SQLite数据库所在的文件夹单击右键属性-安全为Users用户组添加写入权限。这个就不截图了。参考http://blog.csdn.net/sql0815/article/details/10173342.在界面主文件夹下添加SQLite.Interop.dll为链接放错了或没有添加链接就会出现错误无法加载 DLL“SQLite.Interop.DLL”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。参考http://blog.csdn.net/yaucyj/article/details/9999637添加正确后如下图所示(记得把属性改为“始终复制”)3.Web.config配置1 2 3 4.SQLiteHelper.cs获取connectionString操作(读取)数据库1 string str System.Configuration.ConfigurationManager.ConnectionStrings[DB_XHKSQLite].ToString();2“[]”里的参数与Web.config的connectionStrings的add的name相对应。另外除了下载工具创建数据库外还可以参考http://www.cnblogs.com/luxiaoxun/p/3784729.html 用C#代码创建并操作SQLite数据库(此方法未实践因为我用SQLite Expert Personal 4.1 的图形化界面实现的此软件界面如下图所示)对于初期的测试建议用下面内容(在类库下此处记得引用System.Configuration因为默认下他不被引用当然对于面对VS2010错误的你应该自己会发现的别的细节就忽略了我忘了还有什么细节了)从数据库获取的数据时dataset的此处把它变成datatable,再转成json传给前台。下面是js需要调用的ashx文件的主干内容1 //这是获取连接字符串2 string str System.Configuration.ConfigurationManager.ConnectionStrings[DB_XHKSQLite].ToString();3 DataSet ds newDataSet();4 //声明一个Sqlite数据库的链接5 using (SQLiteConnection conn newSQLiteConnection(str))6 {7 //创建sqlite命令8 using (SQLiteCommand comm conn.CreateCommand())9 {10 //打开数据库链接11 conn.Open();12 //select数据分页用limit就行很方便13 comm.CommandText Select * From book;14 using (SQLiteDataAdapter adapter newSQLiteDataAdapter(comm))15 {16 adapter.SelectCommand comm;17 adapter.Fill(ds);18 }19 DataTable dt newDataTable();20 dt ds.Tables[0];21 //Common.Common ff new Common.Common();22 string strjson Common.Common.DataTableToJson(dt, 1);2324 context.Response.Write(strjson);252627 }28 }Common.Common.DataTableToJson代码(按实际需要改格式)1 public static string DataTableToJson(DataTable dt, intcount)2 {3 StringBuilder sbjson newStringBuilder();4 sbjson.Append({);5 sbjson.Append(\total\: count ,\rows\:[);6 if (dt ! null)7 {8 for (int i 0; i dt.Rows.Count; i)9 {10 if (i 0)11 {12 sbjson.Append(,);13 sbjson.Append({);14 foreach (DataColumn dc indt.Columns)15 {16 if (dt.Columns.IndexOf(dc) 0)17 {18 sbjson.Append(,);19 sbjson.Append(\ dc.ColumnName \:\ dt.Rows[i][dc.ColumnName].ToString().Trim() \);20 }21 else22 {23 sbjson.Append(\ dc.ColumnName \:\ dt.Rows[i][dc.ColumnName].ToString().Trim() \);24 }25 }26 sbjson.Append(});27 }28 else29 {30 sbjson.Append({);31 foreach (DataColumn dc indt.Columns)32 {33 if (dt.Columns.IndexOf(dc) 0)34 {35 sbjson.Append(,);36 sbjson.Append(\ dc.ColumnName \:\ dt.Rows[i][dc.ColumnName].ToString().Trim() \);37 }38 else39 {40 sbjson.Append(\ dc.ColumnName \:\ dt.Rows[i][dc.ColumnName].ToString().Trim() \);41 }42 }43 sbjson.Append(});44 }45 }46 }47 sbjson.Append(]});48 returnsbjson.ToString();49 }这是本人3天的摸索感谢网上的各种资料还有师父的远程帮助谨以此总结献给有需要的你希望你能更快地实现前后台的交互若有误导请原谅后期请注意1.在SQLite Expert Personal 4.1改变了数据库的结构(不指某已建表的数据而是指后添加的表)发布会失败(我的电脑上是这样子的)此刻你重启电脑再用管理员身份运行再重新生成发布即可。总结运行程序好像不仅仅是代码的事(当然如果你够厉害应该都可以用代码实现)他有时需要与图形界面结合设置权限等等在一系列实现事情的过程中逐一排查才会呈现你想要的效果。——这是一个需要耐心的过程这也是一个对未知的探索过程。加油
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912304.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!