sqlite数据库删除制定表中重复数据保证数据的唯一

sqlite数据库删除制定表中重复数据保证数据的唯一,第1张

能变通么,将SELECT DISTINCT SIID FROM Bname查出来的数据先备份到另外表呢,如SELECT DISTINCT SIID into 表A FROM Bname,,再将Bname删除掉。。将表A的数据回插到Bname表里。

Sqlite数据库,在很多场合已经用得比较多,由于我的代码生成工具的需要,需要把Sqlite的表、字段、视图等信息获取出来,以便实现各种数据库快速生成项目工程的 *** 作。这里就需要利用C#获取Sqlite数据库的元数据了,和其他数据库一样。 为了获取Sqlite的数据库对象数据,我做了一个测试的例子来获取他的相关信息,其实它的元数据还是和Access的 *** 作方式很接近。首先我们先通过Sqlite的数据库管理工具或者Visual Studio来打开创建一些表,如下所示。 首先我们先来看看通过C#代码获取到数据库对象的 *** 作界面,如下所示。 获取表的元数据界面效果如下所示,视图和这个也查不多,很有意思的一点,就是它把创建的脚本的显示出来了,呵呵。 获取的表字段信息效果如下所示。 有了这些数据,我就很方便在我的代码生成工具Database2Sharp里面实现代码生成 *** 作了。 现在我们来看看以上实现的后台代码是如何的,来了解Sqlite的数据库获取元数据的 *** 作。 string connectionString = "" public Form1() { InitializeComponent() connectionString = string.Format(@"Data Source={0}\OrderWater.dbVersion=3", Application.StartupPath)} private void btnGetSchema_Click(object sender, EventArgs e) { using (SQLiteConnection conn = new SQLiteConnection(connectionString)) { conn.Open()DataTable schemaTable = conn.GetSchema("TABLES")this.dataGridView1.DataSource = schemaTable} } 获取表字段的 *** 作代码如下所示。 private void btnGetColumns_Click(object sender, EventArgs e) { using

1、使用insert方法插入记录

SQLiteDatabase的insert方法的签名为long insert(String table,String nullColumnHack,ContentValues values),这个插入方法的参数说明如下:

table:代表想插入数据的表名。

nullColumnHack:代表强行插入null值的数据列的列名。

values:代表一行记录的数据。

insert方法插入的一行记录使用ContentValues存放,ContentValues类似于Map,它提供了put(String key,Xxx value)(其中key为数据列的列名)方法用于存入数据、getAsXxx(String key)方法用于取出数据。

例如如下语句:

ContentValues values=new ContentValues()

values.put("name","孙悟空"):

values.put("age",500)

//返回新添记录的行号,该行号是一个内部直,与主键id无关,发生错误返回-1

long rowid=db.insert("person_inf",null,values)

2、使用update方法更新数据

SQLiteDatabase的update方法签名为update(String table,ContentValues values,String whereClause,String[] whereArgs),这个更新方法的参数说明如下:

table:代表想要更新数据的表名。

values:代表想要更新的数据。

whereClause:满足该whereClause子句的记录将会被更新。

whereArgs:用于为whereArgs子句传递参数。

例如我们想要更新person_inf表中所有主键大于20的人的人名,可调用如下方法:

ContentValues values=new ContentValues()

//存放更新后的人名

values.put("name","新人名")

int result=db.update("person_inf",values,"_id>?",new Integer[]{20})

3、使用delete方法删除记录

SQLiteDatabase的delete方法签名为delete(String table,String whereClause,String[] whereArgs),这个删除的参数说明如下:

table:代表想删除数据的表名。

whereClause:满足该whereClause子句的记录将会被删除。

whereArgs:用于为whereArgs子句传入参数。

删除person_inf表中所有人名以孙开头的记录

int result=db.delete("person_inf","person_name like ?",new String[]{"孙_"})

4、使用query方法查询记录

SQLiteDatabase的query方法签名为Cursor query(boolean distinct,String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit),这个query方法的参数说明如下。

distinct:指定是否去除重复记录。

table:执行查询数据的表名。

columns:要查询出来的列名。

selection:查询条件子句。

selectionArgs:用于为selection子句中占位符传入参数值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。

groupBy:用于控制分组。

having:用于对分组进行过滤。

orderBy:用于对记录进行排序。

limit:用于进行分页。

例如查询出person_inf表中人名以孙开头的数据

Cursor cursor=db.query("person_inf",new String[]{"_id,name,age"},"name like ?",new String []{"孙%"},null,null,"personid desc","5,10")

cursor.close()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6767191.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存