最近忙着做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的更多相关文章

  1. 简单的后台json,前台解析 操作

    后台: List<PageData> KeyWords=plantDefDetailCSAService.findKeyWords(pd); JSONArray array = new J ...

  2. 【spring 注解 错误】使用controller 作为后台给前台ajax交互数据出错

    controller作为后台与前台的ajax进行交互,后台的方法处理完成返回一个boolean类型的值,想传给前台用来判断是否执行成功,BUT,问题来了: 严重: Servlet.service() ...

  3. jquery ajax 后台和前台数据交互 C#

    <input type="button" id="updateInfo" value="更改货载重量" /> <div i ...

  4. 一、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)

    背景: 目前业界很流行的MVC(model-view-control)开发模式,理解为 模型是Bean, 视图是 Html/Jsp, 控制是Servlet, 关联数据库的Dao web的运行机制: 数 ...

  5. 使用SignalR ASP.NET Core来简单实现一个后台实时推送数据给Echarts展示图表的功能

    什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...

  6. ASP.NET中后台数据和前台控件的绑定

    关于ASP.NET中后台数据库和前台的数据控件的绑定问题 最近一直在学习个知识点,自己创建了SQL Server数据库表,想在ASP.NET中连接数据库,并把数据库中的数据显示在前台,注意,这里的数据 ...

  7. Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合

    今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...

  8. extjs4 前台导出grid数据 生成excel,数据量大后台无法接收到数据

    最近做的一个web项目使用的是extsj4 框架,需要一个导出excel功能,通过extjs4 自带的导出方法实现.在前台生成excel的代码,form提交传递到后台输出.前台grid数据超过1000 ...

  9. ASP.NET前台table通过Ajax获取绑定后台查询的json数据

    上一篇<ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据>写了前台提交数据后台保存到数据库,数据处理以后用户肯定要查询.接下来就写一个前台table通过ajax  J ...

随机推荐

  1. 69个微信小程序常见问题

    本文转自 遇到小程序方面的问题,该去哪里提问呢? 若是能得到微信官方的解答,想必是最叫人安心的.而微信也确实提供了这么一个地方. 在微信公众平台的开发者社区,就置顶了一个「小程序常见问题 FAQ」帖. ...

  2. 1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(题解第二弹)

    1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit:  ...

  3. iOS多线程——GCD

    最近的项目遇到了很多多线程的问题,借此机会对GCD进行了一番学习并总结.首先说一下什么是GCD,GCD全称 Grand Central Dispatch,是异步执行任务的技术之一.开发者只需要定义想要 ...

  4. HTML5微数据

    本篇文章是一个纯搬运贴,原博主是在是做的太详细了 原贴地址:http://www.zhangxinxu.com/wordpress/2011/12/html5扩展-微数据-丰富网页摘要/ 一.微数据是 ...

  5. 使用jQuery监听扫码枪输入并禁止手动输入的实现方法

    @(知识点总结)[jquery|扫码抢] 基于jQuery的扫码枪监听.如果只是想实现监听获取条码扫码信息,可以直接拿来使用,如果有更多的条码判断处理逻辑需要自己扩展. 一.功能需求 使用扫码枪扫描条 ...

  6. (29)网络编程之TCP通信协议

    TCP通信协议特点: 1.tcp协议是基于IO流进行数据的传输,是面向链接的. 2.tcp进行数据传输的时候,数据没有大小限制的. 3.面向链接,通过三次握手的机制,保证数据的完整性,是一个可靠的协议 ...

  7. DARK的锁链

    Description 无向图中有N个节点和两类边,一类边被称为主要边,而另一类被称为附加边.Dark有N – 1条主要边,并且Dark的任意两个节点之间都存在一条只由主要边构成的路径.另外,Dark ...

  8. @RequestParam--SpringMVC 注解系列文章(一)

    概述 RequestParam 注解是使用 SpringMVC 开发过程中,比较常用的一个注解,用于映射请求参数. 代码 package rex.springmvc.handlers; import ...

  9. jsp中的动作标签

    和html标签一样,使用尖括号'<>'包裹起来. 用于在jsp页面中处理业务逻辑,避免在jsp中过多的使用java脚本. <jsp:forward>用于请求转发,它与Reque ...

  10. Android 7.0(牛轧糖)新特性

    Android 7.0(牛轧糖)新特性 谷歌正式在I/O大会现场详细介绍了有关Android 7.0的大量信息.目前,我们已经知道,新一代Android操作系统将支持无缝升级,能够通过Vulkan A ...