最近我弄了一个自己的网站,一个笑话网,网站地址是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的学习分享,多谢大家捧场,大家都多讨论 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|