简单的后台数据和前台数据交互.net
最近忙着做POS项目,心血来来潮写了点小项目。
更具要求是随机显示数据并且产生的数据是可以控制的。前台交互显示能够倒叙,切每次只显示一条,页面不能超过20条超过的部分做删除。
我先展示一下前台的代码,比较简单适合初学者。
因为时间问题,这里采用的是Dbfirst
因为不能让加载页面的时候出现空数据所以在加载的时候会初始化数据到页面上
然后是ajax调用的json数据
页面的ajax
前台大概就是这样
至于后台用的是winform
我直接贴出初始化数据库的代码
using PCDD.Service;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms; namespace PCDD
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
string sql = string.Empty;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
sql = "create database if not exists pcdd";
MySqlHelper.exc(sql);
string path = AppDomain.CurrentDomain.BaseDirectory + @"Script\";
sql = "select count(1) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='pcdd'";
var obj = MySqlHelper.ExNone(sql);
#region 判断数据是否存在 不存在初始化
if (obj.ToString().Equals("0"))
{
var i = MySqlHelper.InitData(path);
Login lo = new Login();
lo.ShowDialog();
if (lo.DialogResult == DialogResult.OK)
{
Application.Run(new CRM());
}
else
{
return;
}
}
else
{
Login lo = new Login();
lo.ShowDialog();
if (lo.DialogResult == DialogResult.OK)
{
Application.Run(new CRM());
}
else
{
return;
}
}
#endregion
}
}
}
MySqlhelper类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Configuration;
using System.Data;
using System.IO; namespace PCDD.Service
{
public class MySqlHelper
{
#region field
private static readonly string constr = ConfigurationManager.ConnectionStrings["mysql"].ToString();
private static readonly string cstr = ConfigurationManager.ConnectionStrings["mysql1"].ToString();
private static MySqlConnection con = new MySqlConnection(constr);
private static MySqlCommand cmd = new MySqlCommand();
#endregion #region PCDD
/// <summary>
/// 查询Datatable
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataTable Query(string sql)
{
Open();
State(sql);
DataTable dt = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(dt);
Close();
return dt;
} /// <summary>
/// 返回None
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object ExNone(string sql)
{
Open();
State(sql);
var x = cmd.ExecuteScalar();
Close();
return x;
} /// <summary>
/// 执行删除
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int ExDelete(string sql)
{
Open();
State(sql);
var x = cmd.ExecuteNonQuery();
Close();
return x;
} public static void State(string sql)
{
cmd.Connection = con;
cmd.CommandText = sql;
} public static void Open()
{
con.Open();
} public static void Close()
{
con.Close();
} /// <summary>
/// 初始化数据
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static int InitData(string path)
{
try
{
int i;
DirectoryInfo di = new DirectoryInfo(path);
foreach (FileInfo fo in di.GetFiles())
{
if (fo.Name.ToUpper().EndsWith("SQL"))
{
var st = fo.OpenText();
var sql = st.ReadToEnd();
st.Close();
Open();
State(sql);
cmd.ExecuteNonQuery();
var filename = (fo.Name).Split('.')[];
State(filename);
i = cmd.ExecuteNonQuery();
Close();
return i;
}
}
return -;
}
catch (Exception)
{ throw;
} }
#endregion #region 数据库不存在
public static int exc(string sql)
{
using (MySqlConnection mcon = new MySqlConnection(cstr))
{
mcon.Open();
MySqlCommand com = new MySqlCommand(sql,mcon);
int i = com.ExecuteNonQuery();
mcon.Close();
return i;
}
} #endregion
}
}
后台管理的代码如下:
using PCDD.Service;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms; namespace PCDD
{
public partial class CRM : Form
{
private string sql = string.Empty;
private int no = 0; #region 初始化
public CRM()
{
InitializeComponent();
} private void CRM_Load(object sender, EventArgs e)
{
l13.Text = "当前用户:" + pojo.UserName;
} #endregion #region 自动模式
/// <summary>
/// 定时器
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tm_Tick(object sender, EventArgs e)
{
sql = "INSERT INTO pc_module(Non,Num1,Num2,Num3,Snum,SmallSingle,BigSingle,SmallBoth,BigBoth,ModifyTime)VALUES('{0}',{1},{2},{3},{4},'{5}','{6}','{7}','{8}','{9}') ";
var x = GenerateRandom(10, 4);
t1.Text = x[1].ToString();
t2.Text = x[2].ToString();
t3.Text = x[3].ToString();
t4.Text = (x[1] + x[2] + x[3]).ToString();
var sum = x[1] + x[2] + x[3];
if (sum % 2 == 0)
{
if (sum >= 14)
{
t5.Text = string.Empty;
t6.Text = string.Empty;
t7.Text = string.Empty;
t8.Text = string.Empty;
t8.Text = "大双";
}
else
{
t5.Text = string.Empty;
t6.Text = string.Empty;
t7.Text = string.Empty;
t8.Text = string.Empty;
t7.Text = "小双";
}
}
else
{
if (sum >= 15)
{
t5.Text = string.Empty;
t6.Text = string.Empty;
t7.Text = string.Empty;
t8.Text = string.Empty;
t6.Text = "大单";
}
else
{
t5.Text = string.Empty;
t6.Text = string.Empty;
t7.Text = string.Empty;
t8.Text = string.Empty;
t5.Text = "小单";
}
}
if (no == 0)
{
no = 819000;
no++;
}
else
{
no++;
}
sql = string.Format(sql, no, x[1].ToString(), x[2].ToString(), x[3].ToString(), sum.ToString(), t5.Text.ToString(), t6.Text.ToString(), t7.Text.ToString(), t8.Text.ToString(), Convert.ToDateTime(DateTime.Now));
MySqlHelper.ExNone(sql); } /// <summary>
/// 产生随机数
/// </summary>
/// <param name="iMax">最大范围</param>
/// <param name="iNum">产生的个数</param>
/// <returns></returns>
List<int> GenerateRandom(int iMax, int iNum)
{
long lTick = DateTime.Now.Ticks;
List<int> lstRet = new List<int>();
for (int i = 0; i < iNum; i++)
{
Random ran = new Random((int)lTick * i);
int iTmp = ran.Next(iMax);
lstRet.Add(iTmp);
lTick += (new Random((int)lTick).Next(10));
}
return lstRet;
} /// <summary>
/// 设置时间间隔
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void b1_Click(object sender, EventArgs e)
{
var bl = IsFloat(t9.Text);
if (t9.Text == null && t9.Text == "")
{
//t9.Text = "1000";//1秒
t9.Text = "240000";//4分钟
tm.Interval = int.Parse(t9.Text);
if (tm.Enabled == false)
{
tm.Enabled = true;
l12.Text = "自动模式成功开启";
}
}
else if (bl == false)
{
t9.Text = string.Empty;
}
else if (Convert.ToDouble(t9.Text) != 0)
{
var s = Convert.ToDouble(t9.Text) * 1000;
var ins = (int)s;
//测试专用代码
#region 测试用
//tm.Interval = ins;
//if (tm.Enabled == false)
//{
// tm.Enabled = true;
// l12.Text = "自动模式成功开启";
//}
//else
//{
// l12.Text = "自动模式成功开启";
//}
#endregion
#region 发布版本代码
if (ins >= 240000)
{
tm.Interval = ins;
if (tm.Enabled == false)
{
tm.Enabled = true;
l12.Text = "自动模式成功开启";
}
else {
l12.Text = "自动模式成功开启";
}
}
else {
tm.Interval = 240000;
if (tm.Enabled == false)
{
tm.Enabled = true;
l12.Text = "对不起!你输入的值小于240(单位:秒)默认时间间隔为4分钟";
}
else {
l12.Text = "对不起!你输入的值小于240(单位:秒)默认时间间隔为4分钟";
}
}
#endregion
}
else
{
tm.Enabled = false;
l12.Text = "自动模式成功关闭";
}
MessageBox.Show("设置成功!");
Thread.Sleep(3000);
l12.Text = ""; }
#endregion #region 手动模式 /// <summary>
/// 手动模式
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void b2_Click(object sender, EventArgs e)
{
sql = "UPDATE pc_module set Num1 ={0},Num2={1},Num3 ={2},Snum ={3},SmallSingle='{4}',BigSingle='{5}',SmallBoth='{6}',BigBoth='{7}' WHERE 1 ORDER BY ModifyTime DESC LIMIT 1";
tm.Enabled = false;
var s0 = t10.Text;
var s1 = t11.Text;
var s2 = t12.Text;
if ((IsFloat(s0) == false) || (IsFloat(s1) == false) || (IsFloat(s2) == false))
{
ShowMsg();
}
else
{
if ((Convert.ToDouble(s0) >= 0 && Convert.ToDouble(s0) <= 9) && (Convert.ToDouble(s1) >= 0 && Convert.ToDouble(s1) <= 9) && (Convert.ToDouble(s2) >= 0 && Convert.ToDouble(s2) <= 9))
{
var sum = Convert.ToDouble(s0) + Convert.ToDouble(s1) + Convert.ToDouble(s2);
l24.Text = sum.ToString();
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
if (sum % 2 == 0)
{
if (sum >= 14)
{
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
l28.Text = "大双";
}
else
{
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
l27.Text = "小双";
}
}
else
{
if (sum >= 15)
{
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
l26.Text = "大单";
}
else
{
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
l25.Text = "小单";
}
}
sql = string.Format(sql, s0.ToString(), s1.ToString(), s2.ToString(), sum.ToString(), l25.Text.ToString(), l26.Text.ToString(), l27.Text.ToString(), l28.Text.ToString());
MySqlHelper.ExNone(sql);
}
else
{
MessageBox.Show("请输入0-9之间的数字");
} }
} #endregion #region 模式切换
//自动
private void b3_Click(object sender, EventArgs e)
{
tm.Enabled = true;
tm.Interval = 240000;
//tm.Interval = 1000;
MessageBox.Show("随机模式开启"); } //手动
private void b4_Click(object sender, EventArgs e)
{
tm.Enabled = false;
//清空手动数据
l24.Text = string.Empty;
l25.Text = string.Empty;
l26.Text = string.Empty;
l27.Text = string.Empty;
l28.Text = string.Empty;
//清空自动数据
t1.Text = string.Empty;
t2.Text = string.Empty;
t3.Text = string.Empty;
t4.Text = string.Empty;
t5.Text = string.Empty;
t6.Text = string.Empty;
t7.Text = string.Empty;
t8.Text = string.Empty;
t9.Text = string.Empty; t10.Text = "0";
t11.Text = "0";
t12.Text = "0";
l24.Text = "0";
l27.Text = "小双"; MessageBox.Show("手动模式开启"); }
#endregion #region 基础方法 /// <summary>
/// 判断是否输入为数字
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsFloat(string str)
{
string regextext = @"^(-?\d+)(\.\d+)?$";
Regex regex = new Regex(regextext, RegexOptions.None);
return regex.IsMatch(str.Trim());
}
public void ShowMsg()
{
MessageBox.Show("请检查输入的三个随机数是否非法!");
} #endregion #region 超级方法
private void b5_Click(object sender, EventArgs e)
{
sql = "delete from pc_module";
var obj = MySqlHelper.ExDelete(sql);
if (obj != 0)
{
MessageBox.Show("已成功清空所有数据!");
}
} private void b6_Click(object sender, EventArgs e)
{
sql = "delete from Pc_Module where ModifyTime BETWEEN '{0}' AND '{1}'";
var time1 = Convert.ToDateTime(DateTime.Now.AddHours(-15));
var time2 = Convert.ToDateTime(DateTime.Now);
sql = string.Format(sql, time1, time2);
var res = MySqlHelper.ExDelete(sql);
if (res != 0)
{
MessageBox.Show("已经删除当天数据!");
}
}
private void Non_Click(object sender, EventArgs e)
{
if (IsFloat(Non_text.Text))
{
no = Convert.ToInt32(Non_text.Text);
}
else
{
no = 819000;//默认值
}
}
#endregion }
}
以上仅供学习使用。目前博主正在研究DDD,欢迎大神做DDD的技术分享。
简单的后台数据和前台数据交互.net的更多相关文章
- 简单的后台json,前台解析 操作
后台: List<PageData> KeyWords=plantDefDetailCSAService.findKeyWords(pd); JSONArray array = new J ...
- 【spring 注解 错误】使用controller 作为后台给前台ajax交互数据出错
controller作为后台与前台的ajax进行交互,后台的方法处理完成返回一个boolean类型的值,想传给前台用来判断是否执行成功,BUT,问题来了: 严重: Servlet.service() ...
- jquery ajax 后台和前台数据交互 C#
<input type="button" id="updateInfo" value="更改货载重量" /> <div i ...
- 一、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)
背景: 目前业界很流行的MVC(model-view-control)开发模式,理解为 模型是Bean, 视图是 Html/Jsp, 控制是Servlet, 关联数据库的Dao web的运行机制: 数 ...
- 使用SignalR ASP.NET Core来简单实现一个后台实时推送数据给Echarts展示图表的功能
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...
- ASP.NET中后台数据和前台控件的绑定
关于ASP.NET中后台数据库和前台的数据控件的绑定问题 最近一直在学习个知识点,自己创建了SQL Server数据库表,想在ASP.NET中连接数据库,并把数据库中的数据显示在前台,注意,这里的数据 ...
- Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合
今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...
- extjs4 前台导出grid数据 生成excel,数据量大后台无法接收到数据
最近做的一个web项目使用的是extsj4 框架,需要一个导出excel功能,通过extjs4 自带的导出方法实现.在前台生成excel的代码,form提交传递到后台输出.前台grid数据超过1000 ...
- ASP.NET前台table通过Ajax获取绑定后台查询的json数据
上一篇<ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据>写了前台提交数据后台保存到数据库,数据处理以后用户肯定要查询.接下来就写一个前台table通过ajax J ...
随机推荐
- 数据库 t-sql 语句
sql 高级语句 在基础语句上加上条件 条件修改: update 表名set 列明=要修改的值 where 列名 =原来的值 条件删除 删除 这个值的的一行 delete from 表名 ...
- Delete Node in a Linked List leetcode
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...
- jumpserver 堡垒机环境搭建(图文详解)
摘要: Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户端无需安装agent. 特点: 完全开源,GPL授权 Python编 ...
- Android手机USB调试安全闲扯(315晚会免费充电桩事件)
前言 今年的又准时乖巧的观看了315晚会,与大家一同学习了各种发财致富的方式...咳.咳..学习防范违法行骗的各种手段.比较感兴趣的两个,一人脸识别,二公共充电桩安全隐患.第一个今天不扯, ...
- Octave Tutorial(《Machine Learning》)之第三课《数据计算》
第三课 Culculating Data 数据计算 矩阵计算 1.简单的四则运算 2.相乘除,乘方运算(元素位运算) ".*"为对应元素的相乘计算 "./"为对 ...
- scrapy学习笔记
1.scrapy用哪条命令行重新编辑已有的项目?cd projectname 2.如何在pycharm中开启scrapy?先在终端创建一个项目(即文件夹),再在pycharm中打开.
- Java 中的数组
1.声明数组String [] arr;int arr1[];String[] array=new String[5];int score[]=new int[3]; 2.初始化数组://静态初始化i ...
- border-radius IE8兼容处理
根据canisue(http://caniuse.com/#search=border-radius),border-radius兼容性如下图所示: 测试代码: <!DOCTYPE html&g ...
- Chrome 开发工具 Workspace 使用
前端开发中我们经常要在浏览器中做一些细节调整,比如对 CSS 的微调,最快的方式当然是直接在 Chrome 的开发者工具中调整,但问题在于在控制台中调试好的数值我们还需要再在 CSS 源码中再写一次, ...
- angular替代Jquery,常用方法支持
1.angular.bind(self,fn.args); 切换作用域执行 2.angular.copy(source,[destination]); 拷贝和深度拷贝 3.angular.eq ...