c#连接sqlite分页显示实用教程.docx
- 文档编号:17751718
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:19
- 大小:388.18KB
c#连接sqlite分页显示实用教程.docx
《c#连接sqlite分页显示实用教程.docx》由会员分享,可在线阅读,更多相关《c#连接sqlite分页显示实用教程.docx(19页珍藏版)》请在冰点文库上搜索。
c#连接sqlite分页显示实用教程
转载请注明出处!
min20062020@。
源码下载:
该版本还有需要改进之处,下一版本进行修改。
一、准备工作
1.创建应用,布局界面。
创建C#windows应用程序,名为CSharp_Sqlite,将设计界面上布局groupBox,用于显示学生信息,拖入显示控件dataGridView1和菜单控件bindingNavigator1。
另外添加两个button,用于查看学生信息和退出。
如下图:
注:
bindingNavigator1的默认属性是在界面的上方,习惯性操作在下方,因此修改其Dock属性,设置为Buttom。
2.添加sqlite运行环境的引用。
由于VS并不自带sqlite.Net,因此需要自行安装和添加。
步骤如下:
1)安装sqlite.Net
解压后,安装“附加文件”目录下的SQLite-1.0.66.0-setup.exe即可。
或到以下链接下载:
2)添加sqlite引用
在选项“项目”->“添加引用”中,找到System.Data.SQLite,确定添加。
此时可看到左侧项目的“引用”中,出现System.Data.SQLite。
【注意】选中该引用,在该引用的属性界面上,将“复制本地”设置为“true”,这样运行之后,可将sqlite.dll从引用处拷贝到项目下,防止出现找不到System.Data.SQLite的错误。
3.添加sqlite数据库表
新建项目文件夹DB,添加现有项studentInfo.db3。
(需事先创建并插入数据,下载项目中有此文件,若没有,可参考附录中的SQL语句)
【注意】选中该数据库,在其属性界面上,将“复制到输出目录”设置为“始终复制”,为防止出现找不到db文件的错误。
二、数据的显示
在使用数据库相关语句之前,必须在代码文件之前添加引用空间名称:
usingSystem.Data.SQLite;
4.添加数据库查询代码
创建函数获取数据库信息,主要包括三个部分:
打开数据库连接、执行sql语句,断开连接。
其主要代码为:
【可运行代码请查看项目源码】
publicDataTableSelectDB()
{
stringdbPath="DB//studentInfo.db3";
/*打开数据库连接*/
stringstrconn="DataSource="+dbPath+";";
SQLiteConnectionsqlconn=newSQLiteConnection(strconn);//创建连接
sqlconn.Open();//打开连接
/*执行sql命令*/
stringstrSQL="select*fromstudentInfo";
SQLiteDataAdaptersqd=newSQLiteDataAdapter(strSQL,sqlconn);
DataTabledt=newDataTable();
sqd.Fill(dt);//将SQL语句执行结果放入dt中
/*关闭连接*/
sqlconn.Close();
returndt;
}
5.添加查询按钮实现代码
双击设计界面上的“查看”按钮,将自动生成该按钮的事件实现函数,并自动跳转到该函数内。
代码主要包括以下内容:
【可运行代码请查看项目源码】
1)调用SelectDB(),并保存其返回值:
DataTablestuDT=newDataTable();
stuDT=SelectDB();
2)处理返回值为空或其他异常情况
/*处理数据库无数据的情况*/
if(stuDT==null||stuDT.Rows.Count==0)
{
MessageBox.Show("没有学生信息可显示!
");
}
3)测试sqlite连接,将结果显示在dataGridView1中。
之后还要做修改。
/*为dataGridView1绑定数据源*/
this.dataGridView1.DataSource=stuDT;
运行程序,点击“查看”按钮,即可查看数据库内容:
另外,根据显示内容进行界面的长宽调节。
宽度调节到不留下右侧空白即可,长度调节到能显示10行即可,之后的用于分页显示。
也可根据实际情况调节。
【注1】若不希望显示左侧的空白列,将其界面属性RowHeadersVisiable设置为false。
【注2】另外,该项目仅显示信息,不希望用户修改内容或格式,因此对以下属性进行设置:
●AllowUserToAddRows:
false
●AllowUserToDeleteRows:
false
●AllowUserToResizeRows:
false
●ReadOnly:
true
三、分页设置
6.布局菜单栏
在设计页面选中bindingNavigator1,右键->“编辑项”,进入页面编辑项,删除原有菜单部署,按照下图所示重新部署:
即依次添加以下属性:
属性
对应名称
备注
Label
toolStripLabel1
显示“上一页”
Separator
bindingNavigatorSeparator
分隔符
TextBox
toolStripTextBox1
显示当前页数
Label
toolStripLabel2
显示总页数
Separator
bindingNavigatorSeparator1
分隔符
Label
toolStripLabel3
显示“下一页”
另外,可在dataGridView1上方,加入两个Label控件,用于显示总记录条数。
7.初始化页面
首先,添加控件bindingSource1,作为bindingNavigator1和dataGridView1的缓存数据源。
创建函数InitDataSet(),初始化菜单控件bindingNavigator1,并载入信息到显示控件dataGridView1中。
privatevoidInitDataSet()
{
pageSize=10;//设置页面行数
total=stuDT.Rows.Count;
pageCount=(total/pageSize);//计算出总页数
if((total%pageSize)>0)
{
pageCount++;
}
pageCurrent=1;//当前页数从开始
currentRow=0;//当前记录数从开始
/*载入DataTable保存的数据库信息*/
LoadData();
}
/*载入DataTable保存的数据库信息*/
privatevoidLoadData()
{
intnStartPos=0;//当前页面开始记录行
intnEndPos=0;//当前页面结束记录行
DataTabledtTemp=this.stuDT.Clone();//克隆DataTable结构框架
if(pageCurrent==pageCount)
{
nEndPos=total;
}
else
{
nEndPos=pageSize*pageCurrent;
}
nStartPos=currentRow;
/*将对应信息显示在菜单栏和总数统计Label中*/
toolStripLabel2.Text="/"+pageCount.ToString();
if(stuDT.Rows.Count==0)
{
toolStripTextBox1.Text="0";
}
else
{
toolStripTextBox1.Text=Convert.ToString(pageCurrent);
}
this.label2.Text=total.ToString();
/*从元数据源复制记录行*/
if(stuDT.Rows.Count!
=0)
{
for(inti=nStartPos;i { dtTemp.ImportRow(stuDT.Rows[i]); currentRow++; } } //绑定由需要显示的记录组成的DataTable为bindingNavigator1的数据源 bindingSource1.DataSource=dtTemp; //将bindingNavigator1设置为bindingNavigator1的数据源 bindingNavigator1.BindingSource=bindingSource1; //将bindingNavigator1设置为dataGridView1的数据源 dataGridView1.DataSource=bindingSource1; } 运行程序,点击查看,效果如下: 8.菜单栏的跳转页面实现 主要包括“上一页”、“下一页”和输入框的跳转实现。 在此,只实现前两项。 最后一项下一版本实现。 选中bindingNavigator1,在其属性页面上点击“事件”按钮,双击ItemClicked,自动生成事件函数,并跳转到函数中。 在函数中实现“上一页”和“下一页”的功能。 /*“上一页”按钮响应*/ if(e.ClickedItem.Text=="上一页") { if(pageCurrent>=0) { pageCurrent--; } if(pageCurrent<=0) { pageCurrent++; MessageBox.Show("已经是第一页! "); return; } else { currentRow=pageSize*(pageCurrent-1); } LoadData();//重新加载 } /*“下一页”按钮响应*/ if(e.ClickedItem.Text=="下一页") { if(pageCurrent<=pageCount) { pageCurrent++; } if(pageCurrent>pageCount) { pageCurrent--; MessageBox.Show("已经是最后一页! "); return; } else { currentRow=pageSize*(pageCurrent-1); } LoadData();//重新加载 } 运行程序,测试功能: 到此,基本功能已经实现啦! ! ! 四、界面美化 9.添加界面图标 下面给界面添加一个图标,简单的美化一下吧。 在主界面Form1的属性界面上,点击Icon后的按钮,选择喜欢的图片作为界面。 再将其Text属性的“Form1”取个名字吧。 10.添加项目图标 为了将自己的程序与其他程序进行区分,可添加一个项目图标。 首先,VS菜单栏,“项目”->“属性”->“应用程序” 点击“图标”后面的按钮,添加图片即可。 五、编译设置 如何让该exe文件在未安装Sqlite.Net的机器上运行? 由于引用了外部的sqlite.dll,因此在未安装Sqlite.Net的机器上运行运行该exe文件则可能出错,这时,可在项目属性“生成”中,将目标平台改为X86,该exe文件就可自动引用其同目录下的System.Data.SQLite.dll文件。 最后运行程序,完成项目! ! ! 六、附录: sqlite数据库语句 11.创建数据库 CREATETABLEstudentInfo ( stuNumvarchar2(32)notnull, stuNamevarchar2(32)notnull, stuAgeINTEGERnotnull, gendervarchar2 (1)notnull, primarykey(stuNum) ) 12.删除一条记录 deletefromstudentInfowherestuName="Lucy" 13.插入一条记录 replaceintostudentInfovalues("001","李三",15,"男") 或者: insertintostudentInfovalues("001","李三",15,"男")
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c# 连接 sqlite 分页 显示 实用教程