数据库引用

SQLite Android: import android.database.sqlite.SQLiteDatabase; //Android内置SQLite Python: import sqlite3 #Python内置SQLite数据库 C#: using System.Data.SQLite; //项目--->管理NuGet程序包--->搜索--->System.Data.SQLite--->安装
MySQL Android: import java.sql.Connection; 下载Android MySQL import java.sql.DriverManager; //复制到:\app\libs\mysql-connector-java-5.1.49.jar 鼠标右键--->Add As Library--->OK Python: import mysql.connector #MySQL数据库 pip install mysql-connector -i https://pypi.tuna.tsinghua.edu.cn/simple C#: using MySql.Data.MySqlClient; //项目--->管理NuGet程序包--->搜索--->MySql.Data--->安装

数据库连接

SQLite Android: SQLiteDatabase AndroidSQLite = new SQLite(this).getReadableDatabase();//连接数据库 //SQLite.getReadableDatabase(); SQLite.getWritableDatabase(); Python: Windows路径:C:\\Users\\Sql.db Linux路径:/root/Sql.db PythonSQLite = sqlite3.connect("路径") #连接SQLite PythonSQLiteCursor = PythonSQLite.cursor() C#: SQLiteConnection C_SQLite = new SQLiteConnection(@"data source=C:\Sql.db"); C_SQLite.Open();//打开数据库 SQLiteCommand C_SQLiteCommand = C_SQLite.CreateCommand();
MySQL Android: new Thread(() -> {//线程 try { Connection AndroidMySql = DriverManager.getConnection("jdbc:mysql://网址或IP:3306/数据库名称", "用户名", "密码"); #连接数据库 Statement AndroidMySqlStatement = AndroidMySql.createStatement(); } catch (Exception ignored) {} }).start(); Python: PythonMySql=mysql.connector.connect(host="ip地址或域名",user="数据用户名",passwd="数据库密码",database="数据库名称",charset="utf8") #连接数据库 PythonMySqlCursor=PythonMySql.cursor() #数据库游标 C#: MySqlConnection C_MySQL = new MySqlConnection("data source=ip地址或域名;database=数据库名称;user id=数据用户名;password=数据库密码;pooling=false;charset=utf8;SSL Mode=None;");//连接MySql//pooling代表是否使用连接池 PHP: $PHPMySql=mysqli_connect("ip地址或域名","数据用户名","数据库密码","数据库名称"); mysqli_query($PHPMySql,"set names utf8");

创建表格

NOT NULL 约束:确保某列不能有 NULL 值。 DEFAULT 约束:当某列没有指定值时,为该列提供默认值。 UNIQUE 约束:确保某列中的所有值是不同的。 PRIMARY Key 约束:唯一标识数据库表中的各行/记录。 CHECK 约束:CHECK 约束确保某列中的所有值满足一定条件 SQLite Android: 创建“SQLite.java”文件 import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class SQLite extends SQLiteOpenHelper { public SQLite(Context context) { super(context,"Sql.db",null,1); } @Override public void onCreate(SQLiteDatabase db){//数据库第一次创建时被调用 db.execSQL("CREATE TABLE IF NOT EXISTS 表格名称(id INTEGER PRIMARY KEY AUTOINCREMENT,列 TEXT ,列 TEXT,列 TEXT)");//判断表格不存在,创建表格 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}//软件版本号发生改变时调用 } Python: PythonSQLiteCursor.execute("CREATE TABLE IF NOT EXISTS ysx (id INTEGER PRIMARY KEY,y TEXT,s TEXT,x TEXT)")#判断表格不存在,创建表格 C#: C_SQLiteCommand.CommandText = "CREATE TABLE IF NOT EXISTS ysx(id INTEGER PRIMARY KEY,y TEXT,s TEXT,x TEXT)";//判断表格不存在,创建表格 C_SQLiteCommand.ExecuteNonQuery();
MySQL Android: int i=AndroidMySqlStatement.executeUpdate("CREATE TABLE IF NOT EXISTS 表格名称 (id INT AUTO_INCREMENT PRIMARY KEY,列 VARCHAR(99),列 VARCHAR(99),列 VARCHAR(99))");//判断表格不存在,创建表格 i=0成功 Python: PythonMySqlCursor.execute("CREATE TABLE IF NOT EXISTS 表格名称 (id INT AUTO_INCREMENT PRIMARY KEY,列 VARCHAR(99),列 VARCHAR(99),列 VARCHAR(99))") #判断表格不存在,创建表格 C#: C_MySQL.Open(); MySqlCommand C_MySQLCommand = new MySqlCommand("CREATE TABLE IF NOT EXISTS ysx (id INT AUTO_INCREMENT PRIMARY KEY,y VARCHAR(99),s VARCHAR(99),x VARCHAR(99))", C_MySQL); C_MySQLCommand.ExecuteNonQuery(); C_MySQL.Close(); PHP: mysqli_query($PHPMySql, "CREATE TABLE IF NOT EXISTS 表格名称 (id INT(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY,列 VARCHAR(99),列 VARCHAR(99),列 VARCHAR(99),date TIMESTAMP)");//#判断表格不存在,创建表格

删除表格

SQLite Android: AndroidSQLite.execSQL("DROP TABLE IF EXISTS "+"表格名称"); //判断表格存在,删除表格 Python: PythonSQLiteCursor.execute("DROP TABLE IF EXISTS "+"表格名称") #判断表格存在,删除表格 C#: C_SQLiteCommand.CommandText = "DROP TABLE IF EXISTS ysx"; //判断表格存在,删除表格 C_SQLiteCommand.ExecuteNonQuery();
MySQL Android: int i=AndroidMySqlStatement.executeUpdate("DROP TABLE IF EXISTS "+"表格名称"); //判断表格存在,删除表格 i=0成功 Python: PythonMySqlCursor.execute("DROP TABLE IF EXISTS %s" % ("表格名称")) #判断表格存在,删除表格 C#: C_MySQL.Open(); MySqlCommand C_MySQLCommand = new MySqlCommand("DROP TABLE IF EXISTS ysx", C_MySQL); C_MySQLCommand.ExecuteNonQuery(); C_MySQL.Close(); PHP: $r = mysqli_query($PHPMySql, "DROP TABLE IF EXISTS 表格名称"); //判断表格存在,删除表格 $r==true删除成功

插入内容

SQLite Android: AndroidSQLite.execSQL("INSERT INTO " + "表格名称" + "(列,列,列) VALUES(?,?,?)", new String[]{"插入内容","插入内容","插入内容"}); //插入内容 ContentValues c = new ContentValues(); c.put("列", "插入内容"); c.put("列", "插入内容"); c.put("列", "插入内容"); AndroidSQLite.insert("表格名称", null, c);//插入内容 Python: PythonSQLiteCursor.execute("INSERT INTO 表格名称 (列,列,列) VALUES (?,?,?)", ("插入内容","插入内容","插入内容")) #插入内容 PythonSQLite.commit() data = [('插入内容','插入内容','插入内容'),('插入内容','插入内容','插入内容')]#插入元组 PythonSQLiteCursor.executemany("INSERT INTO 表格名称 (列,列,列) VALUES (?,?,?)",data) #插入元组 PythonSQLite.commit() C#: C_SQLiteCommand.CommandText = "INSERT INTO ysx(y,s,x) VALUES(@y,@s,@x)";//插入数据 C_SQLiteCommand.Parameters.Add("y", DbType.String).Value = "插入数据"; C_SQLiteCommand.Parameters.Add("s", DbType.String).Value = "插入数据"; C_SQLiteCommand.Parameters.Add("x", DbType.String).Value = "插入数据"; C_SQLiteCommand.ExecuteNonQuery();
MySQL Android: int i = AndroidMySqlStatement.executeUpdate("INSERT INTO 表格名称 (列,列,列) VALUES ('插入内容','插入内容','插入内容')"); PreparedStatement pre = AndroidMySql.prepareStatement("INSERT INTO " + "表格名称" + " (列,列,列) VALUES (?,?,?)"); pre.setString(1,"插入内容"); pre.setString(2,"插入内容"); pre.setString(3,"插入内容"); int i = pre.executeUpdate();//i>0成功 pre.close(); Python: PythonMySqlCursor.execute("INSERT INTO 表格名称 (列,列,列) VALUES (%s,%s,%s)", ("插入内容","插入内容","插入内容")) #插入内容 PythonMySql.commit() #提交数据 data = [('插入内容','插入内容','插入内容'),('插入内容','插入内容','插入内容')]#插入元组 PythonMySqlCursor.executemany("INSERT INTO 表格名称 (列,列,列) VALUES (%s,%s,%s)",data) #插入元组 PythonMySql.commit() #提交数据 C#: C_MySQL.Open(); MySqlCommand C_MySQLCommand = new MySqlCommand("INSERT INTO ysx (y,s,x) VALUES (@y,@s,@x)", C_MySQL); C_MySQLCommand.Parameters.AddWithValue("y", "插入内容"); C_MySQLCommand.Parameters.AddWithValue("s", "插入内容"); C_MySQLCommand.Parameters.AddWithValue("x", "插入内容"); C_MySQLCommand.ExecuteNonQuery(); C_MySQL.Close(); PHP: $r =mysqli_query($PHPMySql, "INSERT INTO 表格名称 (列,列,列) values ('插入内容','插入内容','插入内容')"); $r =mysqli_query($PHPMySql, "INSERT INTO 表格名称 (列,列,列) values ('".函数(值)."','".函数(值)."','".函数(值)."')");

更新内容

SQLite Android: AndroidSQLite.execSQL("UPDATE 表格名称 SET 列=?,列=?,列=? WHERE id=?",new String[]{"更新内容","更新内容","更新内容","id"});//更新内容 Python: PythonSQLiteCursor.execute("UPDATE 表格名称 SET 列=? WHER id=?", ("更新内容","id")) #更新内容 PythonSQLite.commit() #提交数据 C#: C_SQLiteCommand.CommandText = "UPDATE ysx SET y=@y,s=@s,x=@x WHERE id=@id"; //UPDATE 表格名称 SET column1 = value, column2 = value WHERE 条件 C_SQLiteCommand.Parameters.Add("y", DbType.String).Value = "更新数据"; C_SQLiteCommand.Parameters.Add("s", DbType.String).Value = "更新数据"; C_SQLiteCommand.Parameters.Add("x", DbType.String).Value = "更新数据"; C_SQLiteCommand.Parameters.Add("id", DbType.Int32).Value = 1; C_SQLiteCommand.ExecuteNonQuery();
MySQL Android: int i = AndroidMySqlStatement.executeUpdate("UPDATE 表格名称 SET y='更新内容',u='更新内容',i='更新内容' WHERE id='id'"); PreparedStatement pre = AndroidMySql.prepareStatement("UPDATE 表格名称 SET 列=?,列=?,列=? WHERE id=?"); pre.setString(1,"更新内容"); pre.setString(2,"更新内容"); pre.setString(3,"更新内容"); pre.setString(4,"id"); int i = pre.executeUpdate();//i>0成功 pre.close(); Python: PythonMySqlCursor.execute("UPDATE 表格名称 SET 列=%s WHERE id=%s",("更新内容","id")) #更新内容 PythonMySql.commit() #提交数据 C#: C_MySQL.Open(); MySqlCommand C_MySQLCommand = new MySqlCommand("UPDATE ysx SET y=@y,s=@s,x=@x WHERE id=@id", C_MySQL); C_MySQLCommand.Parameters.AddWithValue("y", "更新内容"); C_MySQLCommand.Parameters.AddWithValue("s", "更新内容"); C_MySQLCommand.Parameters.AddWithValue("x", "更新内容"); C_MySQLCommand.Parameters.AddWithValue("id", "1"); C_MySQLCommand.ExecuteNonQuery(); C_MySQL.Close(); PHP: $r = mysqli_query($PHPMySql,"UPDATE 表格名称 SET y='更新内容',u='更新内容',i='更新内容' WHERE id=1"); $r = mysqli_query($PHPMySql,"UPDATE 表格名称 SET y='更新内容',u='更新内容',i='更新内容' WHERE id=变量");

删除内容

SQLite Android: AndroidSQLite.execSQL("DELETE FROM 表格名称 WHERE id=?", new String[]{"id"}); #删除内容 Python: PythonSQLiteCursor.execute("DELETE FROM 表格名称 WHERE id=?", ("id")) #删除内容 PythonSQLite.commit() C#: C_SQLiteCommand.CommandText = "DELETE FROM ysx WHERE id=@id"; //删除内容 C_SQLiteCommand.Parameters.Add("id", DbType.Int32).Value = 1; C_SQLiteCommand.ExecuteNonQuery();
MySQL Android: int i = AndroidMySqlStatement.executeUpdate("DELETE FROM 表格名称 WHERE id='id'"); PreparedStatement pre = AndroidMySql.prepareStatement("DELETE FROM 表格名称 WHERE id=?"); pre.setString(1,"id"); int i = pre.executeUpdate();//i>0成功 pre.close(); AndroidMySql.close(); Python: PythonMySqlCursor.execute("DELETE FROM 表格名称 WHERE id = %s", ("id",)) #删除内容 PythonMySql.commit() #提交数据 PythonMySqlCursor.execute("truncate 表格名称") #清空表格内容 C#: C_MySQL.Open(); MySqlCommand C_MySQLCommand = new MySqlCommand("DELETE FROM ysx WHERE id =@id", C_MySQL); C_MySQLCommand.Parameters.AddWithValue("id", "1"); C_MySQLCommand.ExecuteNonQuery(); C_MySQL.Close(); PHP: $r = mysqli_query($PHPMySql, "DELETE FROM 表格名称 WHERE id='变量'" );

查询内容

SQLite Android: Cursor o = AndroidSQLite.rawQuery("SELECT * FROM " + "表格名称"+" WHERE id = ?", new String[]{"id"}); //查询表格 int n = o.getCount();//数据库行数 while (o.moveToNext()) {//获取全部 int id2=o.getInt(o.getColumnIndex("id")); int id = o.getInt(0); String y1 = o.getString(1); String y2 = o.getString(2); String y3 = o.getString(3); } o.close(); Python: PythonSQLiteCursor.execute("SELECT name from sqlite_master") #获取数据库全部表格 PythonSQLiteCursor.execute("SELECT * FROM 表格名称") #查询表格 列表 = PythonSQLiteCursor.fetchall() #获取全部 列表 = PythonSQLiteCursor.fetchone() #获取一行 C#: C_SQLiteCommand.CommandText = "SELECT * FROM ysx WHERE id=@id"; C_SQLiteCommand.Parameters.Add("id", DbType.Int32).Value = 1; SQLiteDataReader sr = C_SQLiteCommand.ExecuteReader(); while (sr.Read()){ sr.GetInt32(0); sr.GetString(1); } sr.Close();
MySQL Android: ResultSet rs = AndroidMySqlStatement.executeQuery("SELECT * FROM 表格名称"); while (rs.next()){ String o=rs.getString("y"); } Python: PythonMySqlCursor.execute("SELECT * FROM 表格名称") #查询表格 PythonMySqlCursor.execute("SELECT * FROM %s WHERE id =%s"%("表格名称","id")) #按条件查询表格 列表 = PythonMySqlCursor.fetchall() #获取全部 列表 = PythonMySqlCursor.fetchone() #获取一行 C#: MySqlCommand C_MySQLCommand = new MySqlCommand("SELECT y FROM ysx", C_MySQL); C_MySQL.Open(); MySqlDataReader r1 = C_MySQLCommand.ExecuteReader(); while (r1.Read()){ r1.GetString("y"); } C_MySQL.Close(); PHP: $PHPResult = mysqli_query($PHPMySql,"SELECT * FROM 表格名称"); $PHPResult = $PHPMySql->query("SELECT * FROM 表格名称"); while ($row = mysqli_fetch_assoc($PHPResult)) { echo $row['列']; echo $row['列']; echo $row['列']; } while ($row = mysqli_fetch_array($PHPResult)) { echo $row['列']; echo $row['列']; echo $row['列']; } while ($row = $PHPResult->fetch_assoc()) { echo $row['列']; echo $row['列']; echo $row['列']; } while ($row = $PHPResult->fetch_array()) { echo $row['列']; echo $row['列']; echo $row['列']; }

其他

SELECT DISTINCT Directory FROM Bookmarks SELECT Directory FROM Bookmarks group by Directory having Directory!='' SQLite Android: AndroidSQLite.execSQL("ALTER TABLE 表格名称 RENAME TO 新表格名称;"); //表格重新命名 Python: C#: C_SQLiteCommand.CommandText = "ALTER TABLE ysx ADD COLUMN yx TEXT";//增添列 C_SQLiteCommand.ExecuteNonQuery(); C_SQLiteCommand.CommandText = "SELECT count(*) FROM ysx";//获取查询数据的行数 SQLiteDataReader sr = C_SQLiteCommand.ExecuteReader(); sr.Read(); Console.WriteLine(sr.GetInt32(0).ToString()); sr.Close(); C_SQLiteCommand.CommandText = "SELECT sql FROM sqlite_master WHERE TYPE='table'";//读取创建表的SQL语句 SQLiteDataReader sr = C_SQLiteCommand.ExecuteReader(); while (sr.Read()) { Console.WriteLine(sr[0].ToString()); } sr.Close(); 查询表结构 string path = @"d:\test\123.sqlite"; SQLiteConnection cn = new SQLiteConnection("data source=" + path); cn.Open(); SQLiteCommand cmd = cn.CreateCommand(); cmd.CommandText= "PRAGMA table_info('t1')"; //写法一:用DataAdapter和DataTable类,记得要 using System.Data SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd); DataTable table = new DataTable(); adapter.Fill(table); foreach(DataRow r in table.Rows) { Console.WriteLine($"{r["cid"]},{r["name"]},{r["type"]},{r["notnull"]},{r["dflt_value"]},{r["pk"]} "); } Console.WriteLine(); //写法二:用DataReader,这个效率高些 SQLiteDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { for(int i = 0; i < reader.FieldCount; i++) { Console.Write($"{reader[i]},"); } Console.WriteLine(); } reader.Close(); 如果不止一个表,要遍历所有表的结构如下,就要用到 SQLite 中的特殊表 sqlite_master,它的结构如下: CREATE TABLE sqlite_master( type text, name text, tbl_name text, rootpage integer, sql text ); 当 type = table 时,name 和 tbl_name 是一样的,其他比如 type =index 、view 之类时,tbl_name 才是表名 //---遍历查询表结构 static void QueryAllTableInfo() { string path = @"d:\test\123.sqlite"; SQLiteConnection cn = new SQLiteConnection("data source=" + path); if (cn.State != System.Data.ConnectionState.Open) { cn.Open(); SQLiteCommand cmd = new SQLiteCommand(); cmd.Connection = cn; cmd.CommandText = "SELECT name FROM sqlite_master WHERE TYPE='table' "; SQLiteDataReader sr = cmd.ExecuteReader(); List tables = new List(); while (sr.Read()) { tables.Add(sr.GetString(0)); } //datareader 必须要先关闭,否则 commandText 不能赋值 sr.Close(); foreach (var a in tables) { cmd.CommandText = $"PRAGMA TABLE_INFO({a})"; sr = cmd.ExecuteReader(); while (sr.Read()) { Console.WriteLine($"{sr[0]} {sr[1]} {sr[2]} {sr[3]}"); } sr.Close(); } } cn.Close(); }
MySQL Android: Python: PythonMySqlCursor.execute("SHOW TABLES") #获取数据库所有表格 for i in PythonMySqlCursor: print(i)#数据库表格 C#:

关闭数据库

SQLite Android: Python: PythonSQLiteCursor.close #关闭数据库链接 PythonSQLite.close #关闭数据库链接 C#: C_SQLite.Close();//关闭数据库链接
MySQL Android: AndroidMySqlStatement.close(); //关闭数据库链接 AndroidMySql.close(); //关闭数据库链接 Python: PythonMySqlCursor.close() #关闭数据库链接 PythonMySql.close() #关闭数据库链接 C#: PHP: mysqli_free_result($PHPResult); //释放结果集 mysqli_close($PHPMySql); //关闭数据库链接