工商业银行行贵金属汇兑查看小工具,NET中自适应3几人

By admin in 4858.com on 2019年3月26日

正文属于原创,转发请注脚出处,感谢!

本文属于原创,转发请表明出处,多谢!

       
要是1个.NET应用要自适应叁拾四位/61位系统,只须求在品种的“目的平台”设置为“Any
CPU”。不过只要运用中使用了SQLite,情况就区别了。

–首发于网易, 转发请保留此链接  博客原作地址

一 、开发条件

壹 、开发环境

 

本文运转条件: Win7 X64, VS二〇一〇

操作系统:Windows 10 X64

操作系统:Windows 10 X64

 
 SQLite的.NET开发包来自是System.Data.SQLite,完结包容ADO.NET接口,也提供了Linq和Entity
Framework
6完毕。但那不首要,主要的是System.Data.SQLite是由两部分代码组成的,一部分是非托管的C++代码完成,一部分是托管代码与.NET
框架接口。由于非托管代码无法构建成“Any
CPU”的,所以System.Data.SQLite的下载页面包车型客车每种包都以按三玖位或6肆人系统实行了分其余。

1. SQLite 的优点:

    SQLite 是一款轻型数据库,开发包唯有十几M, 相对于 MSSQL 多少个 G
的体量来说几乎是小 Case, 而且在打包成的软件里只需求丰盛相关的 DLL
就能够在别的的微型总结机运营,那或多或少以来比 Access 数据库还要来得便宜。

  SQLite尽管很精妙,但是支持的SQL语句不会太没有于别的开源数据库。

   
越多详情参见百科:SQLite

支付环境:VS二〇一六

付出环境:VS二〇一五

 

2. 开发包下载

    SQLite
官方下载网址

   
本文所用开发包:sqlite-netFx40-setup-bundle-x86-2010-1.0.93.0.exe 

编制程序语言:C#

编制程序语言:C#

  说到此处,顺便说一下,望着System.Data.SQLite的下载页面就眼冒水星。纵然在下载页面一起始就花了大量的字数来验证怎么着选取下载,不过揣摸没几人会把它看完,所以那里依然简单介绍一下。

3. VS 2010 使用 SQLite

.NET版本:.NET Framework 4.0

.NET版本:.NET Framework 4.0

 

3.1 安装 SQLite

     3.1.1. 设置部件有叁个挑选:Full installation(完全安装), Compact
installation(精简安装), Custom installation(自定义安装), 本文所选为 Full
installation

     3.1.2 暗中认可为不勾选 Instatll the designer components for Visual
Studio 二〇〇九, 能够把这些选上

4858.com 1

 

指标平台:X86

目的平台:X86


   1)
首先是按类型分为安装包、非静态连接的二进制包和静态连接的二进制包。安装包会安装相关的动态库到系统内,并注册到GAC(Global
Assembly
Cache);二种二进制包的界别在于非托管部分的连接形式不一样,非静态连接的二进制包在行使时索要VC运维时库的扶助。供给小心的是:假如急需在
Visual Studio中再三再四SQLite数据库,就非得挑选适用的安装包实行设置。

 

  比如,要在Visual Studio
2009中连连SQLite,应该下载“sqlite-netFx40-setup-bundle-x86-2009-1.0.90.0.exe”,那在下载包的证实中有拨云见日石籀文字表明。

4858.com 2

 

[下载包的求证中有醒指标小篆字表明]

 

  安装之后就能够在Visual Studio 20第10中学连连SQLite了:

4858.com 3

 

[在Visual Studio中连接SQLite]

 

   2) 每一个项目都按.NET版本分成了好多小组,最近从.NET 2.0 SP2到.NET
4.5.1,一共帮助多个本子的.NET
Framework。各个.NET版本又分为3一个人和陆十六人两组。接纳叁12位依然陆十六个人是依据使用系统来决定的。比如开发的时候是67位系统而宣布后运营在三十五人系统上,就须求在付出时采用陆12位System.Data.SQLite.dll,而在揭破时用33人的
System.Data.SQLite.dll替换(看起来很费力的榜样请看前面包车型客车解决办法)。

 

   3)
在种种.NET版本分组中都有一个文件包,一个分包“bundle”字样,另一个并未。当中蕴蓄“bundle”字样的表示动态库是按混合方式编译的,在
使用的时候只需求System.Data.SQLite.dll就足以了,而不带“bundle”的则是将非托管部分和托管部分各自编写翻译,System.Data.SQLite.dll不能够独立使用,还需求有SQLite.Interop.dll才能利用。


 

3.1.2 先在本地创立2个空白文件,扩充名为*.db,

         添加 SQLite 连接: Server Explorer -> Data Connections ->
Add Connection …

         Data Source 为 SQLite Database file

       
 由于表结构相似是三遍性创作,所以添加数据库后使用视图直接建立数据表结构,不必接纳代码创立

4858.com 4

4858.com 5

4858.com 6

二、前言

二、前言

  言归正传,借使要使用“Any
CPU”的System.Data.SQLite.dll,就亟须选用不带“bundle”字样,即非混合编写翻译的二进制包。

3.1.3 添加 SQLite 引用

        Solution Explorer -> Reference -> Add Reference…       
找到SQLite 安装路径添加 System.Data.SQLite.dll 引用 

        该类库包蕴SQLiteConnection , SQLiteCommand,SQLiteDataAdapter
等连接操作数据库必要的类

事先使用的是软件的Access来创制基于本地的数据库软件,发以后接纳进程中,发现Access相比较耗内部存款和储蓄器,运营速度比SQLite稍微慢,此外四个最要紧的是Access加密的文本简单被破解,由此,以往转化使用SQLite来代表Access。

此前运用的是软件的Access来创建基于本地的数据库软件,发现在选拔进度中,发现Access相比耗内部存款和储蓄器,运营速度比SQLite稍微慢,其它三个最根本的是Access加密的文书简单被破解,由此,未来转会使用SQLite来顶替Access。

工商业银行行贵金属汇兑查看小工具,NET中自适应3几人。 

3.1.4 新建 SQLiteHelper 类,主假若db 连接的着力音讯,如路径,以及一些数据表的基本操作方法(依照个人需求):

    public class SQLiteHelper
    {
        public SQLiteConnection Connection
        {
            get
            {
                if (_cn == null)
                {
                    Settings settings = new Settings();
                    string connection = settings.Connection.ToString();
                    _cn = new SQLiteConnection(connection);
                }
                return _cn;
            }
        }

        private SQLiteConnection _cn = null;

        public DataTable GetDataTable(string query)
        {
            DataTable dt = new DataTable();
            try
            {
                Connection.Open();
                GetAdapter(query).Fill(dt);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Connection.Close();
            }
            return dt;
        }

        public bool Update(string tableName, DataTable dt)
        {
            try
            {
                Connection.Open();
                string tableStructureQuery = string.Format("SELECT * FROM {0} WHERE 1 = 0", tableName);
                SQLiteDataAdapter da = GetAdapter(tableStructureQuery);
                da.Update(dt);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Connection.Close();
            }
            return true;
        }

        public SQLiteDataAdapter GetAdapter(string query)
        {
            SQLiteCommand selectCommand = new SQLiteCommand(query, Connection);
            SQLiteDataAdapter adapter = new SQLiteDataAdapter(selectCommand);
            SQLiteCommandBuilder sb = new SQLiteCommandBuilder(adapter);
            return adapter;
        }

        public bool ExecuteScript(string query)
        {
            try
            {
                SQLiteCommand selectCommand = new SQLiteCommand(query, Connection);
                Connection.Open();
                selectCommand.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
            finally
            {
                Connection.Close();
            }

            return true;
        }
    }

    public static class DataViewHelper
    {
        public static DataView Clone(this DataView source, string filter)
        {
            if (source == null)
            {
                throw new ApplicationException("Source cannot be null");
            }

            DataView newView = new DataView(source.Table);

            string viewfilter = source.RowFilter;

            List<string> filters = new List<string>();
            if (!string.IsNullOrEmpty(viewfilter))
                filters.Add(string.Format("({0})", viewfilter));
            if (!string.IsNullOrEmpty(filter))
                filters.Add(string.Format("({0})", filter));

            newView.RowFilter = string.Join(" AND ", filters.ToArray());

            return newView;
        }

        public static DataView Clone(this DataView source)
        {
            return source.Clone(string.Empty);
        }
    }

 

(1) 在这之中 Setting.Connection 为 string 类型,只供给钦赐 db 路径,本文
Connection 为: Data Source=D:\Trade\Trade\DB\Quotation.db 

      那里提一下 MSSQL 的 连接字符串以示相比较,一般景色下 MSSQL
的三番五次为ConnectionString 类型的安插节点,如:

      <add name=”Test” connectionString=”Data
Source=ServerName;Initial Catalog=dbName;User ID=xxx;Password=***;”
      providerName=”System.Data.SqlClient” />

(2) 能够观察数库表的操作方法 与 别的数据库操作
类似:连接,运维操作命令,关闭

(3) 小编尝试添加二个 SQLiteParameter.Direction
为 ParameterDirection.Output 的参数 但报错,于今没找到正确的施用办法

(4) 使用 SQLiteConnection 能够用 using
的法子使用,有利于程序内部存款和储蓄器管理及废弃物回收

三、SQLite的下载

三、SQLite的下载

 
 非混合编写翻译的二进制包有System.Data.SQLite.dll和SQLite.Interop.dll七个动态库。按法定表明,SQLite.Interop.dll是能够放与System.Data.SQLite.dll相同的目录下,也足以放在x86或x64子目录下,由
System.Data.SQLite.dll依据系统项目调用。为了确认,下载如下八个包来展开相比较:

3.1.5 新建 DAO 类,继承 SQLiteHelper ,首假诺针对性现实表 的艺术: 

 

    public class DAO : SQLiteHelper
    {
        public DAO(string tableName)
        {
            TableName = tableName;
        }
        public string SelectTableQuery { get { return "SELECT * FROM " + TableName; } }

        public string TableStructureQuery { get { return SelectTableQuery + " WHERE 1=0"; } }

        public int GetMaxID(string fieldName)
        {
            StringBuilder commandText = new StringBuilder();
            commandText.AppendLine(string.Format(@"SELECT MAX({0}) ", fieldName));
            commandText.AppendLine(string.Format(@" FROM {0} ", TableName));
            DataTable dt = GetDataTable(commandText.ToString());
            if (dt == null || dt.Rows.Count == 0)
                return 0;
            else
                return int.Parse(dt.Rows[0][0].ToString());
        }

        public string TableName { get; set; }

        internal DataTable GetDataTableStructor()
        {
            return GetDataTable(TableStructureQuery);
        }

        public bool Update(DataTable dt)
        {
            return base.Update(TableName, dt);
        }
    }

 

① 、由于是基于.NET的C#编制程序,需下载System.Data.SQLite.dll来拓展引用,下载网址如下:

一 、由于是基于.NET的C#编制程序,需下载System.Data.SQLite.dll来拓展引用,下载网址如下:

sqlite-netFx40-binary-Win32-2010-1.0.90.0.zip

sqlite-netFx40-binary-x64-2010-1.0.90.0.zip

4. SQLite 实例小程序 

    Quotation
小程序是用于查看工商业银行行贵金属报价的小工具(那里只更新纸黄金报价),中国银行贵金属报价法定网址

    用户可以每二二十日查看报价,设置 更新频率(私下认可更新周期为 120 s )。

    下载的价码数据保存到 quotation.db
里,同时用户能够上传个人贵金属账户交易记录。

   
依照交易记录设置个人购销差价,选拔是或不是播放音乐提醒用户购买卖出,适用于贵金属短线投资赞助小工具(投资有高风险,入市需谨慎)

 

http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

  结果发现唯有SQLite.Interop.*不等,其余文件都完全相同

4.1 使用方法:

4.1.1 下载:Quotation  Setup
和 db 文件 ( setup 文件用 VS 自带工具打包好的MSI 文件 非源代码 )

4.1.2 安装 Setup 文件, PS: 想要理解 db 结构的读者能够用 VS 或别的SQLite 命令、视图软件查看

4.1.3 更改配置文件,打开 Trade.exe.config , 修改 节点:

<setting name=”Connection” serializeAs=”String”>
<value>Data
Source=D:\Trade\Trade\DB\Quotation.db</value>
</setting>

        个中 <value>Data Source = db path</value> 是
Quotation.db 的存放路径,注意借使软件安装在 C
盘保存时也许提示不能够访问,那时能够把 .config
文件复制出来修改后再交替原来的文件

4.1.4 从 <Load Trx> 菜单命令导入从民生银行下载好的 txt
文件(不要转移格式)用于相比差价, <Transactions>
查看导入的交易记录,无效的交易记录能够选中后 Transactions -> Close
来关闭记录。

4.1.5
小程序为小编个人支出,用于学习调换,个人免费使用,小说权解释权归软件小编全体,任哪个人不得开始展览反编写翻译及这么些向旁人收取其余开销,欢迎读者留言提出意见和提议。

4.1.6 程序截图

4858.com 7

 

 

补充:

android app 查询建行报价可到以下网址下载:

IcbcQuotation
下载 

软件表达: 其实是报价网址的神速形式,只是每隔30s 自动刷新一下

软件截图:

4858.com 8

二 、由于使用的是.NET Framework 4.0,且软件开发的指标平台是X86,因而需下载
sqlite-netFx40-setup-x86-贰零零玖-1.0.105.2.exe 软件,下载网址如下:

二 、由于接纳的是.NET Framework 4.0,且软件开发的靶子平台是X86,因而需下载
sqlite-netFx40-setup-x86-二〇〇九-1.0.105.2.exe 软件,下载网址如下:

4858.com 9

http://system.data.sqlite.org/downloads/1.0.105.2/sqlite-netFx40-setup-x86-2010-1.0.105.2.exe
http://system.data.sqlite.org/downloads/1.0.105.2/sqlite-netFx40-setup-x86-2010-1.0.105.2.exe

 

其它,还有一个 sqlite-netFx40-setup-bundle-x86-二零零六-1.0.105.2.exe,它与
sqlite-netFx40-setup-x86-2009-1.0.105.2.exe
的差距是,它包蕴VS二零零六的运作时组件,因选取的VS2016,全数安装该带有bundle的软件其实并未什么样用处,假若你选取的是VS2008,则足以开始展览下载安装,下载网址如下:

此外,还有1个 sqlite-netFx40-setup-bundle-x86-2008-1.0.105.2.exe,它与
sqlite-netFx40-setup-x86-贰零零玖-1.0.105.2.exe
的分别是,它包括VS二〇〇八的周转时组件,因接纳的VS二〇一六,全部安装该带有bundle的软件其实没有怎么用处,如若您使用的是VS二零零六,则能够展开下载安装,下载网址如下:

[正如结实:唯有SQLite.Interop.*不同]

http://system.data.sqlite.org/downloads/1.0.105.2/sqlite-netFx40-setup-bundle-x86-2010-1.0.105.2.exe
http://system.data.sqlite.org/downloads/1.0.105.2/sqlite-netFx40-setup-bundle-x86-2010-1.0.105.2.exe

 

三 、下载的是Setup安装包,由此只需坚守点击下一步(Next)或安装(Install),直至安装完结即可。

三 、下载的是Setup安装包,由此只需遵守点击下一步(Next)或设置(Install),直至安装实现即可。

  然后将八个包的SQLite.Interop.*个别位居x86和x64子目录下,合并成贰个包。再在不相同品类的系统下运营test.exe,结果都是一心通过

四 、创造加密版本的SQLite数据库

四 、创设加密版本的SQLite数据库

4858.com 10

在此选择的SQLite数据库管理软件为SQLite
Studio,版本为3.1.1,下载网址如下:

在此选用的SQLite数据库管理软件为SQLite
Studio,版本为3.1.1,下载网址如下:

 

https://sqlitestudio.pl/files/sqlitestudio3/complete/win32/sqlitestudio-3.1.1.zip
https://sqlitestudio.pl/files/sqlitestudio3/complete/win32/sqlitestudio-3.1.1.zip

 

有人会问,怎么不行使Navicat For
SQLite,这么些软件不仅有一齐的华语版本,而且还有详细使用验证,不是更好吧?

有人会问,怎么不接纳Navicat For
SQLite,那些软件不仅有完全的汉语版本,而且还有详细使用表明,不是更好呢?

   最后索要做的正是在Visual
Studio项目中引用System.Data.SQLite.dll,再将x86\SQLite.Interop.dll和x64
\SQLite.Interop.dll拷贝到品种根目录,蕴含在档次中,在质量中设置“假若较新则复制”或“始终复制”。生成结果就如这么:

实际,当初也想用那几个软件来对SQLite数据库举办政管理理,但在创制加密版本的SQLite数据库时,发现使用System.Data.SQLite.dll来对该数据库操作时,会弹出类似数据库文件被加密可能不是数据库文件的升迁,而非加密版本的就不曾此难点,因此,能够应用Navicat
For
SQLite来对非加密的SQLite数据操作,但只要急需运用加密的SQLite数据库,推荐应用SQLite
Studio,因为它生成的加密版本SQLite数据库能够被System.Data.SQLite.dll识别。

实质上,当初也想用那几个软件来对SQLite数据库进行政管理制,但在成立加密版本的SQLite数据库时,发现使用System.Data.SQLite.dll来对该数据库操作时,会弹出类似数据库文件被加密只怕不是数据库文件的唤起,而非加密版本的就不曾此难题,由此,能够采纳Navicat
For
SQLite来对非加密的SQLite数据操作,但只要急需运用加密的SQLite数据库,推荐应用SQLite
Studio,因为它生成的加密版本SQLite数据库可以被System.Data.SQLite.dll识别。

TestSQLite\bin\Debug

│  System.Data.SQLite.dll

│  TestSQLite.exe

├─x64

│      SQLite.Interop.dll

└─x86

       SQLite.Interop.dll

有关为何不能够动用Navicat For
SQLite来对加密数据库记性操作的来头是:Navicat使用的加密算法与SQLite
Studio的不均等。

有关为何不可能运用Navicat For
SQLite来对加密数据库记性操作的缘由是:Navicat使用的加密算法与SQLite
Studio的分裂等。

  组合后的包命名为“sqlite-netFx40-static-binary-x86-x64-二零一零-1.0.90.0.zip”,共享给大家,欢迎下载应用。

一 、打开SQLite Studio,点击“添加数据库”按钮,如下图所示:

① 、打开SQLite Studio,点击“添加数据库”按钮,如下图所示:

 

4858.com 11

4858.com 12

◆ 51CTO能源站共享

◆ 360云盘共享

② 、数据类型选取“System.Data.SQLite”,点击鼠灰增进按钮,将文件保留至D:\Test.db,并在Password一栏内输入密码:2017(如不使用密码,此处留空即可),然后点击“OK”按钮即可创制2个加密版本的SQLite
DB文件,如下图所示:

二 、数据类型接纳“System.Data.SQLite”,点击银灰增加按钮,将文件保留至D:\Test.db,并在Password一栏内输入密码:2017(如不使用密码,此处留空即可),然后点击“OK”按钮即可创制四个加密版本的SQLite
DB文件,如下图所示:

 

4858.com 13

4858.com 14

 

③ 、双击“Test”数据库,将会议及展览示其下的子节点,选取“Tables”,并在工具栏点击“新建表”按钮,如下图所示:

三 、双击“Test”数据库,将会显得其下的子节点,选取“Tables”,并在工具栏点击“新建表”按钮,如下图所示:

转自:

4858.com 15

4858.com 16

肆 、在Table name文本框内输入表名Info,并点击“Add
columns(Ins)”图标以便添加列,如下图所示:

④ 、在Table name文本框内输入表名Info,并点击“Add
columns(Ins)”图标以便添加列,如下图所示:

4858.com 17

4858.com 18

伍 、添加首个字段,字段名为ID,数据类型为Text,将主键前的复选框打钩,并点击“OK”按钮,如下图所示:

4858.com,伍 、添加第三个字段,字段名为ID,数据类型为Text,将主键前的复选框打钩,并点击“OK”按钮,如下图所示:

4858.com 19

4858.com 20

六 、重复第⑤个步骤,点击“Add
columns(Ins)”图标以便添加其余2个列,字段名为Name,数据类型为Text,将非空前的复选框打钩,并点击“OK”按钮,如下图所示:

六 、重复第⑤个步骤,点击“Add
columns(Ins)”图标以便添加其余一个列,字段名为Name,数据类型为Text,将非空前的复选框打钩,并点击“OK”按钮,如下图所示:

4858.com 21

4858.com 22

柒 、点击“Commit structure changes”图标以便保存该表及字段,如下图所示:

七 、点击“Commit structure changes”图标以便保存该表及字段,如下图所示:

4858.com 23

4858.com 24

捌 、在弹出的对话框点击“OK”按钮,即可成功表单的创制工作,如下图所示:

⑧ 、在弹出的对话框点击“OK”按钮,即可到位表单的创导工作,如下图所示:

4858.com 25

4858.com 26

玖 、选用“数据”选项卡,点击“插入行(Ins)”图标按钮,如下所示:

玖 、选拔“数据”选项卡,点击“插入行(Ins)”图标按钮,如下所示:

4858.com 27

4858.com 28

十 、在行数据编辑栏里输入两条数据,第3条数据ID为201柒 、Name为LSB,第叁条数据ID为201壹 、Name为CNC,如下图所示:

⑩ 、在行数据编辑栏里输入两条数据,第贰条数据ID为201柒 、Name为LSB,第贰条数据ID为201① 、Name为CNC,如下图所示:

4858.com 29

4858.com 30

1一 、添加多少甘休之后,点击“提交(Ctrl+Return)”图标按钮提交刚才输入的两条数据,如下图所示:

1壹 、添加数量甘休之后,点击“提交(Ctrl+Return)”图标按钮提交刚才输入的两条数据,如下图所示:

4858.com 31

4858.com 32

12、关闭SQLite Studio数据库管理软件。

1贰 、关闭SQLite Studio数据库管理软件。

五、使用System.Data.SQLite.dll访问SQLite数据库

五、使用System.Data.SQLite.dll访问SQLite数据库

① 、新建多个品类名为“SQLiteTest”的控制台应用程序,如下图所示:

① 、新建二个品种名为“SQLiteTest”的控制台应用程序,如下图所示:

4858.com 33

4858.com 34

② 、在“SQLiteTest”项目中右键点击“引用”,在弹出的上下文菜单中选拔“添加引用(Odyssey)”,如下图所示:

二 、在“SQLiteTest”项目中右键点击“引用”,在弹出的上下文菜单中选取“添加引用(昂Cora)”,如下图所示:

4858.com 35

4858.com 36

③ 、将路径为“C:\Program Files
(x86)\System.Data.SQLite\2010\GAC\System.Data.SQLite.dll”的引用添加进去,如下图所示:

三 、将路径为“C:\Program Files
(x86)\System.Data.SQLite\2010\GAC\System.Data.SQLite.dll”的引用添加进去,如下图所示:

4858.com 37

4858.com 38

四 、在档次性质设置中,将“生成”选项卡中的对象平台改为“X86”,不然,软件不可能运维,原因是行使的是X86版本的System.Data.SQLite.dll,如下图所示:

四 、在档次性质设置中,将“生成”选项卡中的靶子平台改为“X86”,不然,软件无法运转,原因是行使的是X86版本的System.Data.SQLite.dll,如下图所示:

4858.com 39

4858.com 40

 

 

五 、在Main主函数里输入以下代码,如下:

⑤ 、在Main主函数里输入以下代码,如下:

using System;
using System.Data.SQLite;
using System.Data;

namespace SQLiteTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SQLiteConnection connection = new SQLiteConnection(@"Data Source = D:\test.db;Password = 2017"))
            {
                using (SQLiteCommand command = new SQLiteCommand(connection)
                { CommandText = "SELECT * FROM [main].[Info]" })
                {
                    DataTable table = new DataTable("Info");
                    SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
                    adapter.Fill(table);
                    foreach(DataRow row in table.Rows)
                    {
                        foreach(DataColumn col in table.Columns)
                        {
                            Console.Write($"{row[col]}\t");
                        }
                        Console.WriteLine();
                    }
                }
            }
            Console.ReadKey();
        }
    }
}
using System;
using System.Data.SQLite;
using System.Data;

namespace SQLiteTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SQLiteConnection connection = new SQLiteConnection(@"Data Source = D:\test.db;Password = 2017"))
            {
                using (SQLiteCommand command = new SQLiteCommand(connection)
                { CommandText = "SELECT * FROM [main].[Info]" })
                {
                    DataTable table = new DataTable("Info");
                    SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
                    adapter.Fill(table);
                    foreach(DataRow row in table.Rows)
                    {
                        foreach(DataColumn col in table.Columns)
                        {
                            Console.Write($"{row[col]}\t");
                        }
                        Console.WriteLine();
                    }
                }
            }
            Console.ReadKey();
        }
    }
}

六 、运维结果如下:

陆 、运转结果如下:

4858.com 41

4858.com 42

 

 

附源代码:

附源代码:

https://pan.baidu.com/s/1bpeXXvx
https://pan.baidu.com/s/1bpeXXvx

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有