这里写自定义目录标题

  • 访问数据库的类
    • 程序打包本地sqlite数据库文件

访问数据库的类

class MyMeans  //访问数据库的类--类包含了程序使用的数据和方法声明。类一般包含多个方法。方法定义了类的行为。{public static int id = 0;public static string Login_ID = "";  //全局变量public static string Login_Name = "";public static string Mean_SQL = "", Mean_Table = "", Mean_Field = "";public static SQLiteConnection My_con;//定义一个类型的静态公共变量,用于判断数据库是否连接成功public static string M_str_sqlcon = @"Data Source=sypfexam.db;Version=3";public static int Login_n = 0;//存储职工基本信息表中的SQL语句public static string AllSql = "SELECT * from  type";public static int examid = 0;//打字题public static int chuanpiaoid = 0;//传票录入public static int kaoshiorsuiji = 0;//随机练习是1正计时,考试是2倒计时Form3 frm3=new Form3();Form6 frm6 = new Form6();public static SQLiteConnection getcon(){ My_con = new SQLiteConnection(M_str_sqlcon);My_con.Open();return My_con;}public void con_close()  //主要对数据库操作后,通过该方法判断是否与数据库连接,如果连接则关闭数据库连接{if (My_con.State == ConnectionState.Open){ My_con.Close();  //关闭数据库的连接My_con.Dispose();  //释放My_con变量的所有空间}}public SQLiteDataReader getcom(string SQLstr)  //主要SQLiteDataReader对象已只读方式读取数据库信息,并以对象进行返回{ getcon();//打开数据库连接SQLiteCommand My_com=My_con.CreateCommand();My_com.CommandText=SQLstr; //获取指定的SQL语句SQLiteDataReader My_read=My_com.ExecuteReader();//执行SQL语句,生成一个sqldatareader对象return My_read;}public void getsqlcom(string SQLstr)  //增删改查{getcon();SQLiteCommand SQLcom = new SQLiteCommand(SQLstr, My_con);SQLcom.ExecuteNonQuery();//执行SQL语句SQLcom.Dispose();//释放所有空间con_close();//关闭数据库连接}public void typeexam(){if (examid <= 14000) //必须在数据库范围内{SQLiteDataReader reader = getcom("SELECT * from type where id=" + examid);/*  Form3 frm3 = new Form3();*/while (reader.Read()){frm3.Controls["label6"].Text = reader.GetString(0);frm3.Controls["label6"].Refresh();frm3.Controls["label7"].Text = reader.GetString(1);frm3.Controls["label7"].Refresh();frm3.Controls["label8"].Text = reader.GetString(2);frm3.Controls["label8"].Refresh();frm3.Controls["label9"].Text = reader.GetString(3);frm3.Controls["label9"].Refresh();frm3.Controls["label10"].Text = reader.GetString(4);frm3.Controls["label10"].Refresh();frm3.Refresh();/*Console.WriteLine(reader.GetString(0));Console.WriteLine(reader.GetString(0).GetType());*//*Console.WriteLine(reader[1].ToString());*//**/}frm3.Show();con_close();//关闭数据库连接examid += 1;//时间中断和介绍后记得释放}}public void chuanpiao(){SQLiteDataReader reader = getcom("SELECT * from chuanpiao where tao=" + chuanpiaoid);/*  Form3 frm3 = new Form3();*/while (reader.Read()){}frm6.Show();con_close();//关闭数据库连接        }private void QueryAllCourse(){}}}
//实现部分private void button1_Click(object sender, EventArgs e){if (Convert.ToInt32(textBox1.Text) < 13001){MyMeans m = new MyMeans();MyMeans.examid = Convert.ToInt32(textBox1.Text);MyMeans.kaoshiorsuiji = 2;//考试代号是2this.Close();//关闭当前窗口m.typeexam();}else{label4.Text = "请按照要求输入\t\n正确的数字";}}

打字程序,一样的计分,不一样的变红,多余的变红

 class Type_Code{public RichTextBox type;public Label cankao;public KeyPressEventArgs e;/*public int type_len1;public int cankao_len1;*/public double score = 0;public static double defen = 0;//计算总得分public Label xianshi;public void Type_Show()//type_len1传入richTextBox1.TextLength  cankao_len1传入label6.Text.Length{if (type.TextLength <= cankao.Text.Length)  //小于等于label的长度时{for (int t = 1; t < type.TextLength + 1; t++) //遍历每一个字符{if (type.Text[t - 1] != cankao.Text[t - 1])//字符不相等{type.Select(t - 1, 1);type.SelectionColor = System.Drawing.Color.Red; //变红type.Select(t, 0);}else//标签和输入字符相等{type.Select(t - 1, 1);type.SelectionColor = System.Drawing.Color.Blue;//正确是绿色type.Select(t, 0);}}}else//大于label的长度时超出的全部变红{for (int t = 1; t < cankao.Text.Length + 1; t++) //遍历每一个字符{if (type.Text[t - 1] != cankao.Text[t - 1])//字符不相等{type.Select(t - 1, 1);type.SelectionColor = System.Drawing.Color.Red; //变红}else//标签和输入字符相等{type.Select(t - 1, 1);type.SelectionColor = System.Drawing.Color.Blue;//正确是绿色}}//超出的全部变红type.Select(cankao.Text.Length, type.TextLength);//不包括括号左边的type.SelectionColor = System.Drawing.Color.Red;type.Select(type.TextLength, 0);}}public double GetScore(int i) //计算得分{if (type.Text == cankao.Text){switch (i){case 6:score = 0.5;break;case 7:score = 2;break;case 8:score = 3;break;case 9:score = 0.5;break;case 10:score = 0.5;break;}}else if (i == 9 && type.Text == cankao.Text + "mj"){score = 13; }else if (i == 9 && type.Text == cankao.Text + "s"){score = 1;}else { score = 0; }return score;}public void Type_Next(){if (e.KeyChar == (char)Keys.Enter) //如果是按的回车键{/* SendKeys.Send("{tab}");*/type.Enabled= false;}}}//使用  当打字时候private void richTextBox3_TextChanged(object sender, EventArgs e){Type_Code r = new Type_Code();r.cankao = label8;r.type = richTextBox3;r.Type_Show();}
//使用 当按的是enter键盘时候private void richTextBox3_KeyPress(object sender, KeyPressEventArgs e){if (e.KeyChar == (char)Keys.Enter){richTextBox4.Enabled = true;Type_Code r = new Type_Code();r.e = e;r.type = richTextBox3;r.cankao = label8;Type_Code.defen += r.GetScore(8);richTextBox3.Enabled = false;richTextBox4.Clear();richTextBox4.Select(0, 1);/*r.Type_Next();*/label18.Text = Type_Code.defen.ToString();}}

在GridView上打字-小键盘录入
事件为

 private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e){int rowindex = e.RowIndex;//获取当前行int Comindex = e.ColumnIndex;//获取当前列if (Comindex==2&&kaoshikaishi == true && zb == false) //如果按了考试开始键{panduan = dataGridView1.Rows[rowindex].Cells[1].Value.Equals(dataGridView1.Rows[rowindex].Cells[2].Value);if (rowindex < 99){if (panduan == true) //左边等于右边{dataGridView1.Rows[rowindex].Cells[3].Value = "正确";fen += 1;label4.Text = fen.ToString();panduan = false;}else{ dataGridView1.Rows[rowindex].Cells[3].Value = "错误"; }}else //100行和之后{if (panduan == true){dataGridView1.Rows[rowindex].Cells[3].Value = "正确";fen += 1;label4.Text = fen.ToString();panduan = false;timer1.Stop();dataGridView1.ReadOnly = true;dataGridView1.Rows[0].Cells[2].Selected = true;//光标放在第一行button1.Text = "考试结束";}else{dataGridView1.Rows[rowindex].Cells[3].Value = "错误";timer1.Stop();dataGridView1.ReadOnly = true;dataGridView1.Rows[0].Cells[0].Selected = true;//光标放在第一行button1.Text = "考试结束";}}
``'```csharp
在这里插入代码片

gridview 访问数据库

 private void Form6_Load(object sender, EventArgs e){dataGridView1.AutoGenerateColumns = false;string connectionString = @"Data Source=sypfexam.db;Version=3";SQLiteConnection dbConnection = new SQLiteConnection(connectionString);//***dbConnection.Open();string sqlCommandString = "SELECT * from chuanpiao where tao = " + MyMeans.chuanpiaoid;//利用 Adapter 转换结果到 datagridSQLiteDataAdapter adapter = new SQLiteDataAdapter(sqlCommandString, dbConnection);// DataSet ds = new DataSet();DataTable dt = new DataTable();// adapter.Fill(ds);adapter.Fill(dt);//DataView dv = ds.Tables[0].DefaultView;//关闭连接,并把结果显示在datagrid上dbConnection.Close();dbConnection.Dispose();//dataGridView1.DataSource = dv;dataGridView1.DataSource = dt;dataGridView1.Columns["Column2"].DataPropertyName = dt.Columns["rmb"].ToString();for (int i = 0; i< 100; i += 1){dataGridView1.Rows[i].Cells[0].Value = i+1;}dataGridView1.ReadOnly = true;  }

**

程序打包本地sqlite数据库文件

**
在添加文件时候添加两遍
第一次把所有文件添加进去,
第二次在添加一遍文件(找到debug里放入的数据库本地文件和一些dll)

C#操作数据库、打字程序,GridView访问数据库、程序打包本地sqlite数据库文件相关推荐

  1. 安卓查看本地sqlite数据库的好用工具

    安卓查看本地sqlite数据库的好用工具 问题背景 安卓日常开发过程中可能经常会涉及到本地sqlite数据库,对本地sqlite数据库的可视化操作可清晰的看到数据库中的数据,方便我们测试和发现问题.这 ...

  2. VMware Workstation 无法连接到虚拟机。请确保您有权限运行该程序、访问改程序使用的所有目录以及访问所有临时文件目录。未能将管道连接到虚拟机: 所有的管道范例都在使用中。

    现象: 虚拟机无端出现,VMware Workstation 无法连接到虚拟机.请确保您有权限运行该程序.访问改程序使用的所有目录以及访问所有临时文件目录.未能将管道连接到虚拟机: 所有的管道范例都在 ...

  3. android sqlite 操作类封装,SQLiteUtils 一个简单的基于 Android 的 Sqlite 数据库的操作封装库 @codeKK Android开源站...

    一个简单的基于 Android 的 Sqlite 数据库的操作封装,它有如下的好处: 便捷地创建表和增添表字段 通过操作对象来 insert 或者 update 表记录 支持多种查询方式,支持分页查询 ...

  4. pyqt5 自定义控件_PyQt5学习笔记(十六)Pyinstaller打包与SQLite数据库

    终于到了最后一章了QAQ,第一次写4万字以上的笔记分享,最近也在忙科创和CV的比赛,所以笔记会显得比较粗糙.其实吧分享这个笔记很大一部分是为了让自己记得更牢,网上翻阅自己的笔记也方便,如果有讲解注释不 ...

  5. 简述sqlite数据库的特点_SQLite教程(一):SQLite数据库介绍

    一.简介: SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB.MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征 ...

  6. android 获取位置数据库,尝试从webview获取位置时,Android“SQLite数据库无法从/CachedGeoposition.db加载”错误...

    我正在创建一个使用webkit和chrome客户端的android应用程序.我希望能够在网页请求时获取当前位置.我设置的网页适用于普通浏览器就好了.然而,当我尝试访问该网页WebKit中,我不断收到此 ...

  7. python建立sqlite数据库_5分钟快速入门,用Python做SQLite数据库开发,附代码适合初学...

    1.它内置,无需安装,省了很多麻烦. 2.使用方便,无需复杂的连接配置,和打开本地文件一样简单. 3.转移方便,数据库就是一个文件,复制.转移.删除都能简单处理 4.轻量级应用中性能优于多数其它的数据 ...

  8. 用navicat访问linux数据库,成功实现Navicat访问Linux中安装的MySQL数据库

    我们在Linux中安装完数据库(MySQL)后,使用navicat去进行远程连接时会报以下错误 这主要是因为我们没有给权限,所以外部主机没有权限访问linux中的MySQL 我们只需要登陆linux中 ...

  9. VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。未能将管道连接到虚拟机: 系统找不到指定的文件

    尝试了下列博客上所有的方法,大概都是要杀死进程什么的,我还卸载VMware重装,都不好用,来来去去折腾了小一天. https://blog.csdn.net/hewenqing1/article/de ...

最新文章

  1. CentOS 7 快速部署 ELK
  2. 在一个大项目中,我选择了另一种JDK实现AdoptOpenJDK
  3. 解决GPU模型训练的随机性
  4. (转)常用正则表达式
  5. 超经典解释什么叫网关
  6. 互联网企业安全之端口监控
  7. python中递归函数
  8. docker下载地址及 设置自己的阿里云镜像加速器,Kubernetes(K8S) 安装
  9. 如何做好测试用例设计
  10. 波士顿房价数据集 Boston house prices dataset
  11. selenium安装
  12. 谷歌地球(Google Earth)7.3.1.4507官方多语言专业版
  13. 系统发育基因组学(Phylogenomics)的介绍以及实操
  14. redhat7 scl 源_redhat 系使用 scl 工具临时使用高级开发工具
  15. Appium+Pytest+Allure集成PO项目管理模式实现自动化测试
  16. 【SQLite】C++链接SQLite数据库
  17. 烟花易冷,一指繁华了无痕:伤感QQ空间日志
  18. 基于Springboot+Mybatis+mysql+vue技术交流博客论坛系统
  19. 21世纪的中国计算神经科学展望
  20. 第01节、WEEX是什么?

热门文章

  1. Command Msiexec Install
  2. 海天酱油紧跟互联网步伐,线上线下融合发展
  3. Crayon Syntax Highlighter插件修改成中文
  4. python比赛积分类算法题_Python算法题(一)——青蛙跳台阶
  5. php 地域插件,Z-BlogPHP地区分站插件
  6. C51单片机驱动LCD1602显示字符串
  7. 冰河十年前的预测如今被阿里实现了,非常震撼
  8. Absolute(绝对定位)与relative(相对定位)的图文讲解
  9. 使用github作为博客引擎
  10. Windows ID事件及解释(XP、2000、2003)【转】