Sqlite学习心得

      最近我弄了一个自己的网站,一个笑话网,网站地址是http:www.365joke.net  作为一个站长最烦恼的事情就是百度收录问题,还有就是更新数据问题,为了百度很好的收录,和解决更新数据的麻烦,我自己弄了一个采集文章的工具,并可以发布,这样解决了我每天手动更新数据的问题,但是文章也没有做到原创!先来分享下我弄这个采集工具 学习Sqlite微型数据库的一些心得。

     我弄这个采集工具主要是想回家了没有网,不能更新网站数据的问题,我想把我这个工具放到U盘里能够去网吧采集和发布,但是为了解决安装数据库的我决定选择了微型数据库Sqlite。Sqlite与Access一样,都是单文件的。就是说没有数据库引擎,数据库文件在磁盘上就是一个文件。而且Sqlite支持索引,视图和触发器。这些都比Access强。

    说道这里我们来步入正题.

    一,你要使用Sqlite你得先下载Sqlite的类库System.Data.SQLite.dll 和Sqlite3.exe ,你可以到这里下载http://www.onlinedown.net/softdown/119209_2.htm

    二,现在加入你的Sqlite3.exe 放在f:\download的目录下,则你运行电脑的cmd命令之后到达f:download目录下之后输入Sqlite3 数据库名 例如:Sqlite3 Mydata.db 按回车后如下图

 

出现这个图就代表你的第一个数据库Mydata.db已经创建成功了

三,接下来是创建表了接下来输入create table 表名(字段一 数据类型,字段二,数据类型..); 之后按回车,如下图所示

 

亲们,看到这,就代表你已经在Mydata.db数据库中创建 一张名为joke的表了

四,接下来的是插入数据了,继续在后面输入insert table 表名 select 字段一,字段二

如下图所示

 

到了这一步就已经插入了一条记录,

五,现在来查询这条记录,如下图

亲,看到了没,现在刚插入的数据已经查询出来了

六,现在到这里已经对sqlite的操作已经有了一个初步的认识了,Sqlite支持Sql语句,你可以同过Sql语句来实现各种操作了,不过还是有点语法的差别,有写语法是不支持的,比如创建自增列,现在就告一段落了,后面我们用.net来实现各种操作sqlite

 

七,在C#中链接Sqlite数据库我们得先引用Sqlite的类库System.Data.SqLite.dll,其他的操作数据可靠和ADO.net链接SqlServer一样,也有Connect,Command,Adapter等,接下来我们来创建一个SqliteHelper的类吧

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Data.Common;
using System.Data;
namespace SqliteText
{
    public class SqlLiteHelper
    {
            public static string ConnSqlLiteDbPath = string.Empty;
            public static string ConnString
            {
                get
                {
                    return string.Format(@"Data Source={0}", ConnSqlLiteDbPath);
                }
            }

            // 取datatable
            public static DataTable GetDataTable(string sSQL)
            {
                DataTable dt = null;
                try
                {
                    SQLiteConnection conn = new SQLiteConnection(ConnString);
                    conn.Open();
                    SQLiteCommand cmd = new SQLiteCommand();
                    cmd.CommandText = sSQL;
                    cmd.Connection = conn;
                    SQLiteDataAdapter dao = new SQLiteDataAdapter(cmd);
                    dt = new DataTable();
                    dao.Fill(dt);
                }
                catch
                {
                    throw;
                }
                return dt;
            }

            // 取某个单一的元素
            public static object GetSingle( string sSQL)
            {
                DataTable dt = GetDataTable( sSQL);
                if (dt != null && dt.Rows.Count > 0)
                {
                    return dt.Rows[0][0];
                }
                return null;
            }
            // 取最大的ID
            public static Int32 GetMaxID( string sKeyField, string sTableName)
            {
                DataTable dt = GetDataTable("select ifnull(max([" + sKeyField + "]),0) as MaxID from [" + sTableName + "]");
                if (dt != null && dt.Rows.Count > 0)
                {
                    return Convert.ToInt32(dt.Rows[0][0].ToString());
                }
                return 0;
            }

            // 执行insert,update,delete 动作,也可以使用事务
            public static bool UpdateData(out string sError, string sSQL, bool bUseTransaction = false)
            {
                int iResult = 0;
                sError = string.Empty;
                if (!bUseTransaction)
                {
                    try
                    {
                        SQLiteConnection conn = new SQLiteConnection(ConnString);
                        conn.Open();
                        SQLiteCommand comm = new SQLiteCommand(conn);
                        comm.CommandText = sSQL;
                        iResult = comm.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        sError = ex.Message;
                        iResult = -1;
                    }
                }
                else // 使用事务
                {
                    DbTransaction trans = null;
                    try
                    {
                        SQLiteConnection conn = new SQLiteConnection(ConnString);
                        conn.Open();
                        trans = conn.BeginTransaction();
                        SQLiteCommand comm = new SQLiteCommand(conn);
                        comm.CommandText = sSQL;
                        iResult = comm.ExecuteNonQuery();
                        trans.Commit();
                    }
                    catch (Exception ex)
                    {
                        sError = ex.Message;
                        iResult = -1;
                        trans.Rollback();
                    }
                }
                return iResult > 0;
            }
    }
 
}

创建完SqliteHelper类后我们来创建一个窗体来测试

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SqliteText
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

    

        private void button1_Click(object sender, EventArgs e)
        {

          //设置链接数据库路径
            SqlLiteHelper.ConnSqlLiteDbPath = Application.StartupPath + \\MyData.db;
            string sql = "select * from Joke";
           DataTable dt=  SqlLiteHelper.GetDataTable(sql);//通过Sql语句来查询数据库数据

           //以下是把查询出来的数据显示到ListView控件中
            if(dt!=null)
            {
                int count = 0;
                if(dt.Rows.Count>0)
                {
                    foreach(DataRow row in dt.Rows)
                    {
                        ListViewItem lvi = new ListViewItem((++count).ToString());
                        lvi.SubItems.Add(row[0].ToString());
                        lvi.SubItems.Add(row[1].ToString());
                        lvi.SubItems.Add(row[2].ToString());
                        lvi.SubItems.Add(row[3].ToString());
                        lvi.SubItems.Add(row[4].ToString());
                        lvi.SubItems.Add(row[5].ToString());
                        lvi.SubItems.Add(row[6].ToString());
                        lvi.SubItems.Add(row[7].ToString());
                        this.listView1.Items.Add(lvi);
                    }
                }
            }
        }
    }
}

亲们,以上是我学习Sqlite的学习分享,多谢大家捧场,大家都多讨论

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值