C#操作数据库、打字程序,GridView访问数据库、程序打包本地sqlite数据库文件
这里写自定义目录标题
- 访问数据库的类
- 程序打包本地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数据库文件相关推荐
- 安卓查看本地sqlite数据库的好用工具
安卓查看本地sqlite数据库的好用工具 问题背景 安卓日常开发过程中可能经常会涉及到本地sqlite数据库,对本地sqlite数据库的可视化操作可清晰的看到数据库中的数据,方便我们测试和发现问题.这 ...
- VMware Workstation 无法连接到虚拟机。请确保您有权限运行该程序、访问改程序使用的所有目录以及访问所有临时文件目录。未能将管道连接到虚拟机: 所有的管道范例都在使用中。
现象: 虚拟机无端出现,VMware Workstation 无法连接到虚拟机.请确保您有权限运行该程序.访问改程序使用的所有目录以及访问所有临时文件目录.未能将管道连接到虚拟机: 所有的管道范例都在 ...
- android sqlite 操作类封装,SQLiteUtils 一个简单的基于 Android 的 Sqlite 数据库的操作封装库 @codeKK Android开源站...
一个简单的基于 Android 的 Sqlite 数据库的操作封装,它有如下的好处: 便捷地创建表和增添表字段 通过操作对象来 insert 或者 update 表记录 支持多种查询方式,支持分页查询 ...
- pyqt5 自定义控件_PyQt5学习笔记(十六)Pyinstaller打包与SQLite数据库
终于到了最后一章了QAQ,第一次写4万字以上的笔记分享,最近也在忙科创和CV的比赛,所以笔记会显得比较粗糙.其实吧分享这个笔记很大一部分是为了让自己记得更牢,网上翻阅自己的笔记也方便,如果有讲解注释不 ...
- 简述sqlite数据库的特点_SQLite教程(一):SQLite数据库介绍
一.简介: SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB.MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征 ...
- android 获取位置数据库,尝试从webview获取位置时,Android“SQLite数据库无法从/CachedGeoposition.db加载”错误...
我正在创建一个使用webkit和chrome客户端的android应用程序.我希望能够在网页请求时获取当前位置.我设置的网页适用于普通浏览器就好了.然而,当我尝试访问该网页WebKit中,我不断收到此 ...
- python建立sqlite数据库_5分钟快速入门,用Python做SQLite数据库开发,附代码适合初学...
1.它内置,无需安装,省了很多麻烦. 2.使用方便,无需复杂的连接配置,和打开本地文件一样简单. 3.转移方便,数据库就是一个文件,复制.转移.删除都能简单处理 4.轻量级应用中性能优于多数其它的数据 ...
- 用navicat访问linux数据库,成功实现Navicat访问Linux中安装的MySQL数据库
我们在Linux中安装完数据库(MySQL)后,使用navicat去进行远程连接时会报以下错误 这主要是因为我们没有给权限,所以外部主机没有权限访问linux中的MySQL 我们只需要登陆linux中 ...
- VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。未能将管道连接到虚拟机: 系统找不到指定的文件
尝试了下列博客上所有的方法,大概都是要杀死进程什么的,我还卸载VMware重装,都不好用,来来去去折腾了小一天. https://blog.csdn.net/hewenqing1/article/de ...
最新文章
- CentOS 7 快速部署 ELK
- 在一个大项目中,我选择了另一种JDK实现AdoptOpenJDK
- 解决GPU模型训练的随机性
- (转)常用正则表达式
- 超经典解释什么叫网关
- 互联网企业安全之端口监控
- python中递归函数
- docker下载地址及 设置自己的阿里云镜像加速器,Kubernetes(K8S) 安装
- 如何做好测试用例设计
- 波士顿房价数据集 Boston house prices dataset
- selenium安装
- 谷歌地球(Google Earth)7.3.1.4507官方多语言专业版
- 系统发育基因组学(Phylogenomics)的介绍以及实操
- redhat7 scl 源_redhat 系使用 scl 工具临时使用高级开发工具
- Appium+Pytest+Allure集成PO项目管理模式实现自动化测试
- 【SQLite】C++链接SQLite数据库
- 烟花易冷,一指繁华了无痕:伤感QQ空间日志
- 基于Springboot+Mybatis+mysql+vue技术交流博客论坛系统
- 21世纪的中国计算神经科学展望
- 第01节、WEEX是什么?