C#操作Sqlite数据库:创建数据库,创建表格,删增改查

创建数据库:

/// <summary>
/// 新建数据库文件
/// </summary>
/// <param name="m_FilePath">数据库文件路径及名称</param>
/// <returns>新建成功,返回true,否则返回false</returns>
static public Boolean NewDbFile(string m_FilePath)
{
  try
 {
     SQLiteConnection.CreateFile(m_FilePath);
    return true;
 }
  catch (Exception ex)
 {
    throw new Exception("新建数据库文件" + m_FilePath + "失败:" + ex.Message);
 }
}

eg:NewDbFile(“D:\\XXX.db”);
注意:在创建到D 盘时候可能会出现拒绝访问的情况,这种情况可能是权限不够,可以换个路径进行创建

创建表格:

/// <summary>
/// 创建表
/// </summary>
/// <param name="dbPath">指定数据库文件</param>
/// <param name="tableName">表名称</param>
static public void NewTable(string dbPath, string tableName)
{

        SQLiteConnection sqliteConn = new SQLiteConnection("data source=" + dbPath);
        if (sqliteConn.State != System.Data.ConnectionState.Open)
        {
            sqliteConn.Open();
            SQLiteCommand cmd = new SQLiteCommand();
            cmd.Connection = sqliteConn;
            cmd.CommandText = "CREATE TABLE " + tableName + "(时间 Text,数据 Text, 状态 Text)";
            cmd.ExecuteNonQuery();
         }
     sqliteConn.Close(); 
}

连接数据库并查询显示:

 public void SQLiteGetInformationToShow(object sender, EventArgs e )//获取数据库的信息并显示
        {
            SQLiteDataAdapter m_Adapter = new SQLiteDataAdapter("select * from " + tableName, m_SqlConnection);
            dt = new DataTable();

            m_Adapter.Fill(dt);
            ListViewAllDisplay(dt, EventArgs.Empty);//写一个事件,在主窗口类中完善,使得datatable转换listview并填充到listview
        }

Form:

private void M_Manager_OnListViewAllDisplay(object sender,EventArgs e)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new EventHandler(M_Manager_OnListViewAllDisplay), sender, e);
                return;
            }

            DataTable dt = (DataTable)sender;
            tool.dataTableToListview(this.listViewDisplay, dt);//该转换函数请参考我的第一篇文章
        }

增加消息:

 public void Add(string[] keys, string[] values)
        {
            //INSERT INTO TableName(时间,数据,状态) VALUES('时间','数据','状态');
            string keys_string = "(" + keys[0];
            string value_string = "('" + values[0]+"'";

            for (int i = 1; i < keys.Length; i++)
            {
                keys_string += "," + keys[i];
            }
            for (int i = 1; i < values.Length; i++)
            {
                value_string += ",'" + values[i]+"'";
            }
            keys_string += ")";
            value_string += ")";
            string sql = string.Format("INSERT INTO "+TableName+" {0} VALUES {1}", keys_string, value_string);
            m_Cmd = new SQLiteCommand(sql, m_SqlConnection);
            int rows = m_Cmd.ExecuteNonQuery();
         
            MessageBox.Show("添加成功" + rows + "行");
        }

修改消息:

 public void Update(string[] keys, string[] values,string[] oldvalues) //修改信息
        {
            //UPDATE TableName SET 时间 = '时间', 数据 = '数据', 状态 = '状态' WHERE 时间 = '时间' AND 数据 = '数据' AND 状态 = '状态';
            string values_string = keys[0]+"='"+values[0]+"'";
            string oldvalues_string = keys[0] + "='" + oldvalues[0]+"'";
            for (int i = 1; i < values.Length; i++)
            {
                values_string += ","+ keys[i] + "=" + values[i];
            }
            for (int i = 1; i < oldvalues.Length; i++)
            {
                oldvalues_string += " And " + keys[i] + "='" + values[i]+"'";
            }
            string sql = string.Format("UPDATE "+TableName+" SET {0} WHERE {1}; ",values_string, oldvalues_string);
            m_Cmd = new SQLiteCommand(sql, m_SqlConnection);
            int rows = m_Cmd.ExecuteNonQuery();
           
            MessageBox.Show("修改成功!" + rows + "行");
        }

删除消息:

 public void Delete(string[] keys,string[] values)//删除信息
        {
            //DELETE FROM TableName WHERE 时间 = '时间' AND 数据 = '数据' AND 状态 = '状态';
            string values_string = keys[0] + "='" + values[0] + "'";
            for (int i = 1; i < values.Length; i++)
            {
                values_string += "And" + keys[i] + "='" + values[i] + "'";
            }
            string sql = string.Format("DELETE FROM "+TableName+" WHERE {0} ", values_string);
            m_Cmd = new SQLiteCommand(sql, m_SqlConnection);
            int rows = m_Cmd.ExecuteNonQuery();

            MessageBox.Show("删除成功!" + rows + "行");
        }

最后补充关于VS2015的问题:

笔者最近遇到了VS2015崩溃,显示菜单初始化出错,需要打开VS命令窗口输入:devenv.exe/resetuserdata
但是输入以后还是打不开程序,笔者试着卸载重新安装2015,还是一样的问题
最后用2013了,如果您有好的解决办法,请在评论区留下高见,谢谢各位。

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的SQLite数据库创建改查操作的示例。以下是步骤: 1. 创建一个继承自SQLiteOpenHelper的类,该类用于创建和管理数据库。在该类的构造函数中,您需要传入数据库名称、版本号等参数,并在onCreate()方法中创建数据库表结构。 ```java public class DBHelper extends SQLiteOpenHelper { private static final String DB_NAME = "my_db"; private static final int DB_VERSION = 1; public DBHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表结构 String sql = "CREATE TABLE user(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 数据库升级操作 } } ``` 2. 在需要使用数据库的Activity或Fragment中,创建DBHelper实例,并调用getWritableDatabase()方法获取可写数据库对象。 ```java DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase(); ``` 3. 插入数据。您可以使用ContentValues对象封装要插入的数据,然后调用insert()方法进行插入操作。 ```java ContentValues values = new ContentValues(); values.put("name", "Tom"); values.put("age", 20); db.insert("user", null, values); ``` 4. 询数据。您可以使用query()方法进行操作,并将结果封装成Cursor对象。 ```java Cursor cursor = db.query("user", null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); // do something with the data } cursor.close(); ``` 5. 更新数据。您可以使用ContentValues对象封装要更新的数据,并调用update()方法进行更新操作。 ```java ContentValues values = new ContentValues(); values.put("age", 21); db.update("user", values, "name=?", new String[]{"Tom"}); ``` 6. 除数据。您可以使用delete()方法进行操作。 ```java db.delete("user", "age>?", new String[]{"18"}); ``` 以上是SQLite数据库创建改查操作的一个简单示例,当然,在您的实际开发过程中,您需要根据实际需求进行更加详细的设计和开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值