آموزش ثبت رکورد توسط جی کوئری و وب سرویس و JSON
پنجشنبه 23 مهر 1394در این مقاله نحوه ثبت مشخصات کارمندان در بانک اطلاعاتی Sql Serever توسط تکنولوژی های سمت کاربر و وب سرویس ها را خواهید آموخت.
مقدمه
قبل از شروع لازم است تا توضیحاتی در مورد تکنولوژی های استفاده شده در مثال داده شود.
JQUERY : یک کتابخانه جاوااسکریپت که کدنویسی جاوااسکریپت را تا حد زیادی آسان می کند.
WebService : وب سرویس یک پلتفرم ارتباطی میان دو برنامه با پلتفرم مختلف می باشد که به آنها اجازه استفاده از وب متدهایشان را می دهد.
JSON :
مخفف عبارت JavaScript Object Notation (نشانه گذاری شیء جاوااسکریپت)
Json یک فرمت تبادل داده سبک وزن می باشد.
JSon یک زبان مستقل و خودمختار می باشد.
JSon خود توصیف بوده و به سادگی قابل فهم می باشد.
تذکر : برای یادگیری بهتر جی کوئری شما ابتدا باید دانشی از Css و JavaScript داشته باشید.
توضیحات
ابتدا یک بانک اطلاعاتی با نام DB_Example ایجاد کرده و جدولی مانند تصویر زیر در آن ایجاد می کنیم.
می توانید برای ساخت بانک از کدهای زیر استفاده نمایید.
GO ALTER DATABASE [DB_Example] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [DB_Example] SET ANSI_NULLS OFF GO ALTER DATABASE [DB_Example] SET ANSI_PADDING OFF GO ALTER DATABASE [DB_Example] SET ANSI_WARNINGS OFF GO ALTER DATABASE [DB_Example] SET ARITHABORT OFF GO ALTER DATABASE [DB_Example] SET AUTO_CLOSE OFF GO ALTER DATABASE [DB_Example] SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE [DB_Example] SET AUTO_SHRINK OFF GO ALTER DATABASE [DB_Example] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [DB_Example] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [DB_Example] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [DB_Example] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [DB_Example] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [DB_Example] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [DB_Example] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [DB_Example] SET DISABLE_BROKER GO ALTER DATABASE [DB_Example] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [DB_Example] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [DB_Example] SET TRUSTWORTHY OFF GO ALTER DATABASE [DB_Example] SET ALLOW_SNAPSHOT_ISOLATION OFF GO ALTER DATABASE [DB_Example] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [DB_Example] SET READ_COMMITTED_SNAPSHOT OFF GO ALTER DATABASE [DB_Example] SET HONOR_BROKER_PRIORITY OFF GO ALTER DATABASE [DB_Example] SET READ_WRITE GO ALTER DATABASE [DB_Example] SET RECOVERY FULL GO ALTER DATABASE [DB_Example] SET MULTI_USER GO ALTER DATABASE [DB_Example] SET PAGE_VERIFY CHECKSUM GO ALTER DATABASE [DB_Example] SET DB_CHAINING OFF GO EXEC sys.sp_db_vardecimal_storage_format N'DB_Example', N'ON' GO USE [DB_Example] GO /****** Object: Table [dbo].[Employees] Script Date: 10/12/2015 11:55:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Employees]( [id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](50) NOT NULL, [salary] [money] NOT NULL, CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET IDENTITY_INSERT [dbo].[Employees] ON INSERT [dbo].[Employees] ([id], [Name], [salary]) VALUES (1, N'بردیا', 100.0000) INSERT [dbo].[Employees] ([id], [Name], [salary]) VALUES (2, N'علی', 100.0000) INSERT [dbo].[Employees] ([id], [Name], [salary]) VALUES (5, N'سجاد', 5000.0000) SET IDENTITY_INSERT [dbo].[Employees] OFF
شمای کلی Solution به صورت زیر می باشد.
ابتدا یک پروژه webForm ایجاد می نماییم.
سپس یک وب سرویس با نام My.asmx ایجاد می کنیم.
My.asmx
using System; using System.Collections.Generic; using System.Configuration; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.Script.Serialization; using System.Web.Services; namespace WebApplication6 { ///// <summary> ///// Summary description for My ///// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] //// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. [System.Web.Script.Services.ScriptService] public class My : System.Web.Services.WebService { string CS = ConfigurationManager.ConnectionStrings["MyCon"].ConnectionString; //Below method will accept employee type object and save it DB. [WebMethod] public void saveData(Employee emp1) { SqlConnection _con = new SqlConnection(CS); SqlCommand _cmd = new SqlCommand("insert into Employees values(@name,@salary)", _con); _cmd.Parameters.AddWithValue("@name", emp1.Name); _cmd.Parameters.AddWithValue("@salary", emp1.Salary); _con.Open(); int i = _cmd.ExecuteNonQuery(); _con.Close(); } //This method has used to select the employee record and store in collection. [WebMethod] public void GetEmployeeRecord() { List<Employee> _li = new List<Employee>(); SqlConnection _con = new SqlConnection(CS); SqlCommand _cmd = new SqlCommand("select * from Employees", _con); _con.Open(); SqlDataReader dr = _cmd.ExecuteReader(); while (dr.Read()) { Employee emp = new Employee(); emp.ID = Convert.ToInt32(dr[0]); emp.Name = dr[1].ToString(); emp.Salary = Convert.ToInt32(dr[2]); _li.Add(emp); } _con.Close(); //JavaScriptSerializer class has used to convert list collection to JSON array. JavaScriptSerializer js = new JavaScriptSerializer(); Context.Response.Write(js.Serialize(_li)); } } }
حال یک فرم اضافه می کنیم. آن را Default نامگذااری می کنیم.
کدهای زیر را برای آن می نویسیم.
Default.aspx
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="/jquery-1.10.2.min.js"></script> <script src="/MyJsCode.js"></script> <style type="text/css"> .auto-style1 { width: 72px; } .auto-style2 { width: 53px; } </style> </head> <body style="background-color: ActiveBorder"> <form id="form1" style="height: 500px; width: 250px; border: solid; border-collapse: collapse; margin-top: 120px; margin-left: 400px;" dir="rtl"> <div id="div1" style="height: 170px; width: 500px;"> <p style="margin-left: 100px; font-family: Algerian;">نام و حقوق کارمند را وارد نمایید</p> <table id="tbl1" border="1" style="margin-left: 130px; margin-top: 30px"> <tr> <td>نام</td> <td> <input id="txtname" type="text" /></td> </tr> <tr> <td>حقوق</td> <td> <input id="txtsalary" type="text" /></td> </tr> <tr> <td colspan="2"> <input id="btnSave" type="button" value="ثبت" style="margin-left: 10px; width: 150px" onclick="addToDatabase()"/> </td> </tr> </table> <br /> </div> <div id="div2" style="height: 250px; width: 500px"> <p style="margin-left: 150px; font-family: Algerian;">مشخصات کارمندان</p> <table id="tbl2" border="1" style="border-collapse: collapse; margin-left: 135px; width: 200px;"> <thead> <tr> <th class="auto-style2">آیدی</th> <th>نام</th> <th class="auto-style1">حقوق</th> </tr> </thead> <tbody> </tbody> </table> </div> <h3><a href="http://www.barnamenevisan.org">مرجع تخصصی برنامه نویسان</a></h3> </form> </body> </html>
در پوشه App-Code کلاسی با نام Employee با پروپرتی های زیر ایجاد نمایید.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WebApplication6 { public class Employee { public int ID { get; set; } public string Name { get; set; } public int Salary { get; set; } } }
حال یک فایل جاوااسکریپت با نام MyJsCode.js به پروژه اضافه می نماییم. کدهای زیر را برای آن می نویسیم.
//TO Save the User Data $(document).ready(function () { show(); }); //TO Display the Records function show() { $.ajax({ url: 'My.asmx/GetEmployeeRecord', dataType: "json", method: 'post', success: function (data) { var employee = $("#tbl2 tbody"); employee.empty(); $(data).each(function (index, emp) { employee.append('<tr><td>' + emp.ID + '</td><td>' + emp.Name + '</td><td>' + emp.Salary + '</td></tr>'); }); }, error: function (err) { alert(err); } }); } function addToDatabase() { var employee = {}; employee.Name = $("#txtname").val(); employee.Salary = $("#txtsalary").val(); $.ajax({ url: 'My.asmx/saveData', dataType: "json", method: 'post', contentType: 'application/json;Charset=utf-8', data: '{emp1:' + JSON.stringify(employee) + '}', success: function () { show(); $("#txtname").val(""); $("#txtsalary").val(""); }, error: function (err) { alert("Please Enter Name and Salary"); } }); };
در فایل Web.Config لازم است تا رشته اتصال را اضافه نمایید.
<?xml version="1.0" encoding="utf-8"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> </system.web> <connectionStrings> <add name="MyCon" connectionString="Data Source=.;Initial Catalog=DB_Example;User ID=sa;Password=123"/> </connectionStrings> </configuration>
خروجی به صورت زیر خواهد بود.
- ASP.net
- 2k بازدید
- 4 تشکر