代码 4. insert TABLE 表的 SQL 插入(insert)语句 5. line 每行一个值 6. list 由 .separator 字符串分隔的值 7. tabs 由 Tab 分隔的值 8. tcl TCL 列表元素
.nullvalue STRING
在 NULL 值的地方输出 STRING 字符串。
.output FILENAME
发送输出到屏幕。
.print STRING
逐字地输出 STRING 字符串
.prompt MAIN CONTINUE
替换标准提示符。
.quit
退出 SQLite 提示符。
.read FILENAME
执行 FILENAME 文件中的 SQL。
.schema ?TABLE?
显示 CREATE 语句。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表。
.separator STRING
改变输出模式和 .import 所使用的分隔符。
.show
显示各种设置的当前值。
.stats ON/OFF
开启或关闭统计。
.tables ?PATTERN?
列出匹配 LIKE 模式的表的名称。
.timeout MS
尝试打开锁定的表 MS 毫秒。
.width NUM NUM
为 “column” 模式设置列宽度。
.timer ON/OFF
开启或关闭 CPU 定时器。
修改设置值
设置格式化输出
SQLite语法
数据库操作
注释 SQL 注释以两个连续的 “-” 字符为注释。
SQLite遵循SQL标准,语法也大致相似。SQLite与SQL差异和SQLite语法
数据类型
创建数据库 sqlite3 database_name.db
用于创建一个数据库并进入该数据库。如果sqlite3后面没有参数就会进入默认的main
数据库。
也可以通过.open test.db
在main
中新建或打开test数据库。 查看数据库 创建后通过.databses
查看 退出数据库 .quit
退出数据库
导出数据库 .dump
命令来导出完整的数据库在一个文本文件中
sqlite3 testDB.db .dump > testDB.sql
可以通过简单的方式从生成的 testDB.sql 恢复,如下所示:
sqlite3 testDB.db < testDB.sql
表操作
创建表 CREATE TABLE 语句的基本语法:
CREATE TABLE database_name. table_name(
column1 datatype PRIMARY KEY ( one or more columns ) ,
column2 datatype,
column3 datatype,
. . . . .
columnN datatype,
) ;
.tables
查看表
删除表 DROP TABLE 语句:
DROP TABLE COMPANY
修改表 SQLite 的 ALTER TABLE 命令不通过执行一个完整的转储和数据的重载来修改已有的表。您可以使用 ALTER TABLE 语句重命名表,使用 ALTER TABLE 语句还可以在已有的表中添加额外的列。
在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作。
重命名已有的表的 ALTER TABLE 的基本语法如下:
ALTER TABLE database_name. table_name RENAME TO new_table_name;
用来在已有的表中添加一个新的列的 ALTER TABLE 的基本语法如下:
ALTER TABLE database_name. table_name ADD COLUMN column_def. . . ;
删除表 DELETE 命令从已有的表中删除全部的数据。
DELETE FROM table_name;
数据操作
插入数据 INSERT INTO 语句用于向数据库的某个表中添加新的数据行。
INSERT INTO TABLE_NAME [ ( column1, column2, column3,.. .columnN) ]
VALUES ( value1, value2, value3,.. .valueN) ;
查询数据
SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。
SELECT column1, column2, columnN FROM table_name;
SELECT * FROM table_name;
可以结合where
,and
,or
来实现条件查询
输出的格式可以通过.mode
命令改变。
使用 SELECT 语句获取并显示所有这些记录。可以通过命令来设置格式化的输出。
sqlite> . header on
sqlite> . mode column
sqlite> SELECT * FROM user ;
格式化输出
有时数据宽度比较长,通过命令设置输出列的宽度。由于要显示的列的默认宽度导致 .mode column
,这种情况下,输出被截断。此时,您可以使用 .width num, num....
命令设置显示列的宽度,如下所示:
sqlite> . width 10 , 20 , 10
sqlite> SELECT * FROM COMPANY;
更新数据 UPDATE 查询用于修改表中已有的记录。可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新。
UPDATE table_name
SET column1 = value1, column2 = value2.. .. , columnN = valueN
WHERE [ condition] ;
删除数据 DELETE 查询用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。
DELETE FROM table_name
WHERE [ condition] ;
可以使用 AND 或 OR 运算符来结合 N 个数量的条件。
Schema视图
点命令只在 SQLite 提示符中可用,所以当您进行带有 SQLite 的编程时,您要使用下面的带有 sqlite_master 表的 SELECT 语句来列出所有在数据库中创建的表:
# 主视图命名
.schema sqlite_master
# 查询表视图
SELECT tbl_name FROM sqlite_master WHERE type = 'table';
# 表的完整信息
SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'COMPANY';
SQLite运算符
算术运算符 比较运算符
逻辑运算符
SQLite表达式 avg()、sum()、count(),等等,执行被称为对一个表或一个特定的表列的汇总数据计算。
SELECT COUNT( *) AS "RECORDS" FROM COMPANY;
日期表达式返回当前系统日期和时间值,这些表达式将被用于各种数据操作。
SELECT CURRENT_TIMESTAMP;
SQLite复杂查询
模糊查询like LIKE 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。这里有两个通配符与 LIKE 运算符一起使用:
百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。
匹配通配符查询 GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的。
星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用。
限制查询 LIMIT 子句用于限制由 SELECT 语句返回的数据数量。
SELECT column1, column2, columnN
FROM table_name
LIMIT [ start]
SELECT column1, column2, columnN
FROM table_name
LIMIT [ start] OFFSET [ end]
排序查询 ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。
SELECT column-list
FROM table_name
[ WHERE condition]
[ ORDER BY column1, column2, .. columnN] [ ASC | DESC] ;
asc升序,desc降序
分组查询 GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2.. .. columnN
ORDER BY column1, column2.. .. columnN
将group by后的相同字段分为一组
过滤查询 HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
对分组查询再一次过滤
去重查询 SQLite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。
SELECT DISTINCT column1, column2, . . . . . columnN
FROM table_name
WHERE [ condition]
嵌套查询
SQLite 约束
约束是在表的数据列上强制执行的规则。这些是用来限制可以插入到表中的数据类型。这确保了数据库中数据的准确性和可靠性。
约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。
NOT NULL 约束 默认情况下,列可以保存 NULL 值。如果您不想某列有 NULL 值,那么需要在该列上定义此约束,指定在该列上不允许 NULL 值。
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL ,
NAME TEXT NOT NULL ,
AGE INT NOT NULL ,
ADDRESS CHAR ( 50 ) ,
SALARY REAL
) ;
DEFAULT 约束 DEFAULT 约束在 INSERT INTO 语句没有提供一个特定的值时,为列提供一个默认值。
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL ,
NAME TEXT NOT NULL ,
AGE INT NOT NULL ,
ADDRESS CHAR ( 50 ) ,
SALARY REAL DEFAULT 50000.00
) ;
UNIQUE 约束 UNIQUE 约束防止在一个特定的列存在两个记录具有相同的值。
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL ,
NAME TEXT NOT NULL ,
AGE INT NOT NULL UNIQUE ,
ADDRESS CHAR ( 50 ) ,
SALARY REAL DEFAULT 50000.00
) ;
PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每个记录。在一个表中可以有多个 UNIQUE 列,但只能有一个主键。在设计数据库表时,主键是很重要的。主键是唯一的 ID。
主键是表中的一个字段,唯一标识数据库表中的各行/记录。主键必须包含唯一值。主键列不能有 NULL 值。
一个表只能有一个主键,它可以由一个或多个字段组成。当多个字段作为主键,它们被称为复合键。
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL ,
NAME TEXT NOT NULL ,
AGE INT NOT NULL ,
ADDRESS CHAR ( 50 ) ,
SALARY REAL
) ;
CHECK 约束 CHECK 约束启用输入一条记录要检查值的条件。如果条件值为 false,则记录违反了约束,且不能输入到表。
CREATE TABLE COMPANY3(
ID INT PRIMARY KEY NOT NULL ,
NAME TEXT NOT NULL ,
AGE INT NOT NULL ,
ADDRESS CHAR ( 50 ) ,
SALARY REAL CHECK ( SALARY > 0 )
) ;
SQLite 支持 ALTER TABLE 的有限子集。在 SQLite 中,ALTER TABLE 命令允许用户重命名表,或向现有表添加一个新的列。重命名列,删除一列,或从一个表中添加或删除约束都是不可能的。
Autoincrement(自动递增)自增约束 SQLite 的 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增。我们可以在创建表时在特定的列名称上使用 AUTOINCREMENT 关键字实现该字段值的自动增加。关键字 AUTOINCREMENT 只能用于整型(INTEGER)字段。
CREATE TABLE table_name(
column1 INTEGER AUTOINCREMENT,
column2 datatype,
column3 datatype,
. . . . .
columnN datatype,
) ;
SQLite连接查询
SQLite 的 Join 子句用于结合两个或多个数据库中表的记录。JOIN 是一种通过共同值来结合两个表中字段的手段。
交叉连接(CROSS JOIN)把第一个表的每一行与第二个表的每一行进行匹配。如果两个输入表分别有 x 和 y 行,则结果表有 x*y 行。由于交叉连接(CROSS JOIN)有可能产生非常大的表,使用时必须谨慎,只在适当的时候使用它们。
SELECT . . . FROM table1 CROSS JOIN table2 . . .
交叉连接的操作,它们都返回被连接的两个表所有数据行的笛卡尔积,返回到的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
内连接(INNER JOIN)根据连接谓词结合两个表(table1 和 table2)的列值来创建一个新的结果表。查询会把 table1 中的每一行与 table2 中的每一行进行比较,找到所有满足连接谓词的行的匹配对。当满足连接谓词时,A 和 B 行的每个匹配对的列值会合并成一个结果行。
内连接(INNER JOIN)是最常见的连接类型,是默认的连接类型。INNER 关键字是可选的。
SELECT . . . FROM table1 [ INNER ] JOIN table2 ON conditional_expression . . .
外连接(OUTER JOIN)是内连接(INNER JOIN)的扩展。虽然 SQL 标准定义了三种类型的外连接:LEFT、RIGHT、FULL,但 SQLite 只支持 左外连接(LEFT OUTER JOIN)。
外连接(OUTER JOIN)声明条件的方法与内连接(INNER JOIN)是相同的,使用 ON、USING 或 NATURAL 关键字来表达。最初的结果表以相同的方式进行计算。一旦主连接计算完成,外连接(OUTER JOIN)将从一个或两个表中任何未连接的行合并进来,外连接的列使用 NULL 值,将它们附加到结果表中。
SELECT . . . FROM table1 LEFT OUTER JOIN table2 ON conditional_expression . . .
查询连接
SQLite的 UNION 子句/运算符用于合并两个或多个 SELECT 语句的结果,不返回任何重复的行。
为了使用 UNION,每个 SELECT 被选择的列数必须是相同的,相同数目的列表达式,相同的数据类型,并确保它们有相同的顺序,但它们不必具有相同的长度。
SELECT column1 [ , column2 ]
FROM table1 [ , table2 ]
[ WHERE condition]
UNION
SELECT column1 [ , column2 ]
FROM table1 [ , table2 ]
[ WHERE condition]
UNION ALL 运算符用于结合两个 SELECT 语句的结果,包括重复行。适用于 UNION 的规则同样适用于 UNION ALL 运算符。
SELECT column1 [ , column2 ]
FROM table1 [ , table2 ]
[ WHERE condition]
UNION ALL
SELECT column1 [ , column2 ]
FROM table1 [ , table2 ]
[ WHERE condition]
SQLite 事务
事务(Transaction)是一个对数据库执行工作单元。事务(Transaction)是以逻辑顺序完成的工作单位或序列,可以是由用户手动操作完成,也可以是由某种数据库程序自动完成。
BEGIN TRANSACTION 命令 事务(Transaction)可以使用 BEGIN TRANSACTION 命令或简单的 BEGIN 命令来启动。此类事务通常会持续执行下去,直到遇到下一个 COMMIT 或 ROLLBACK 命令。不过在数据库关闭或发生错误时,事务处理也会回滚。
BEGIN ;
or
BEGIN TRANSACTION ;
COMMIT 命令 COMMIT 命令是用于把事务调用的更改保存到数据库中的事务命令。
COMMIT ;
or
END TRANSACTION ;
ROLLBACK 命令 ROLLBACK 命令是用于撤消尚未保存到数据库的事务的事务命令。
ROLLBACK ;
SQLite常用函数
SELECT count ( * ) FROM COMPANY;
SELECT max ( salary) FROM COMPANY;
SELECT min ( salary) FROM COMPANY;
时间和日期
修饰符(Modifier)时间字符串后边可跟着零个或多个的修饰符,这将改变有上述五个函数返回的日期和/或时间。
SQLite接口
Java接口
在 Java 程序中使用 SQLite 之前,我们需要确保机器上已经有 SQLite JDBC Driver 驱动程序。并且在 classpath路径中添加下载的 jar 文件 sqlite-jdbc-(VERSION).jar工具包。
连接sqlite数据库
import java. sql. * ;
public class SQLiteJDBC
{
public static void main ( String args[ ] )
{
Connection c = null ;
try {
Class . forName ( "org.sqlite.JDBC" ) ;
c = DriverManager . getConnection ( "jdbc:sqlite:test.db" ) ;
} catch ( Exception e ) {
System . err. println ( e. getClass ( ) . getName ( ) + ": " + e. getMessage ( ) ) ;
System . exit ( 0 ) ;
}
System . out. println ( "Opened database successfully" ) ;
}
}
创建表 和JDBC操作差不多。
import java. sql. * ;
public class SQLiteJDBC
{
public static void main ( String args[ ] )
{
Connection c = null ;
Statement stmt = null ;
try {
Class . forName ( "org.sqlite.JDBC" ) ;
c = DriverManager . getConnection ( "jdbc:sqlite:test.db" ) ;
System . out. println ( "Opened database successfully" ) ;
stmt = c. createStatement ( ) ;
String sql = "CREATE TABLE COMPANY " +
"(ID INT PRIMARY KEY NOT NULL," +
" NAME TEXT NOT NULL, " +
" AGE INT NOT NULL, " +
" ADDRESS CHAR(50), " +
" SALARY REAL)" ;
stmt. executeUpdate ( sql) ;
stmt. close ( ) ;
c. close ( ) ;
} catch ( Exception e ) {
System . err. println ( e. getClass ( ) . getName ( ) + ": " + e. getMessage ( ) ) ;
System . exit ( 0 ) ;
}
System . out. println ( "Table created successfully" ) ;
}
}
INSERT 操作
import java. sql . * ;
public class SQLiteJDBC
{
public static void main( String args[ ] )
{
Connection c = null ;
Statement stmt = null ;
try {
Class. forName( "org.sqlite.JDBC" ) ;
c = DriverManager. getConnection( "jdbc:sqlite:test.db" ) ;
c. setAutoCommit( false ) ;
System. out . println( "Opened database successfully" ) ;
stmt = c. createStatement( ) ;
String sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " +
"VALUES (1, 'Paul', 32, 'California', 20000.00 );" ;
stmt. executeUpdate( sql ) ;
sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " +
"VALUES (2, 'Allen', 25, 'Texas', 15000.00 );" ;
stmt. executeUpdate( sql ) ;
sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " +
"VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );" ;
stmt. executeUpdate( sql ) ;
sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " +
"VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );" ;
stmt. executeUpdate( sql ) ;
stmt. close ( ) ;
c. commit ( ) ;
c. close ( ) ;
} catch ( Exception e ) {
System. err. println( e. getClass( ) . getName( ) + ": " + e. getMessage( ) ) ;
System. exit ( 0 ) ;
}
System. out . println( "Records created successfully" ) ;
}
}
SELECT 操作
import java. sql . * ;
public class SQLiteJDBC
{
public static void main( String args[ ] )
{
Connection c = null ;
Statement stmt = null ;
try {
Class. forName( "org.sqlite.JDBC" ) ;
c = DriverManager. getConnection( "jdbc:sqlite:test.db" ) ;
c. setAutoCommit( false ) ;
System. out . println( "Opened database successfully" ) ;
stmt = c. createStatement( ) ;
ResultSet rs = stmt. executeQuery( "SELECT * FROM COMPANY;" ) ;
while ( rs. next ( ) ) {
int id = rs. getInt( "id" ) ;
String name = rs. getString( "name" ) ;
int age = rs. getInt( "age" ) ;
String address = rs. getString( "address" ) ;
float salary = rs. getFloat( "salary" ) ;
System. out . println( "ID = " + id ) ;
System. out . println( "NAME = " + name ) ;
System. out . println( "AGE = " + age ) ;
System. out . println( "ADDRESS = " + address ) ;
System. out . println( "SALARY = " + salary ) ;
System. out . println( ) ;
}
rs. close ( ) ;
stmt. close ( ) ;
c. close ( ) ;
} catch ( Exception e ) {
System. err. println( e. getClass( ) . getName( ) + ": " + e. getMessage( ) ) ;
System. exit ( 0 ) ;
}
System. out . println( "Operation done successfully" ) ;
}
}
UPDATE 操作
import java. sql . * ;
public class SQLiteJDBC
{
public static void main( String args[ ] )
{
Connection c = null ;
Statement stmt = null ;
try {
Class. forName( "org.sqlite.JDBC" ) ;
c = DriverManager. getConnection( "jdbc:sqlite:test.db" ) ;
c. setAutoCommit( false ) ;
System. out . println( "Opened database successfully" ) ;
stmt = c. createStatement( ) ;
String sql = "UPDATE COMPANY set SALARY = 25000.00 where ID=1;" ;
stmt. executeUpdate( sql ) ;
c. commit ( ) ;
ResultSet rs = stmt. executeQuery( "SELECT * FROM COMPANY;" ) ;
while ( rs. next ( ) ) {
int id = rs. getInt( "id" ) ;
String name = rs. getString( "name" ) ;
int age = rs. getInt( "age" ) ;
String address = rs. getString( "address" ) ;
float salary = rs. getFloat( "salary" ) ;
System. out . println( "ID = " + id ) ;
System. out . println( "NAME = " + name ) ;
System. out . println( "AGE = " + age ) ;
System. out . println( "ADDRESS = " + address ) ;
System. out . println( "SALARY = " + salary ) ;
System. out . println( ) ;
}
rs. close ( ) ;
stmt. close ( ) ;
c. close ( ) ;
} catch ( Exception e ) {
System. err. println( e. getClass( ) . getName( ) + ": " + e. getMessage( ) ) ;
System. exit ( 0 ) ;
}
System. out . println( "Operation done successfully" ) ;
}
}
DELETE 操作
import java. sql . * ;
public class SQLiteJDBC
{
public static void main( String args[ ] )
{
Connection c = null ;
Statement stmt = null ;
try {
Class. forName( "org.sqlite.JDBC" ) ;
c = DriverManager. getConnection( "jdbc:sqlite:test.db" ) ;
c. setAutoCommit( false ) ;
System. out . println( "Opened database successfully" ) ;
stmt = c. createStatement( ) ;
String sql = "DELETE from COMPANY where ID=2;" ;
stmt. executeUpdate( sql ) ;
c. commit ( ) ;
ResultSet rs = stmt. executeQuery( "SELECT * FROM COMPANY;" ) ;
while ( rs. next ( ) ) {
int id = rs. getInt( "id" ) ;
String name = rs. getString( "name" ) ;
int age = rs. getInt( "age" ) ;
String address = rs. getString( "address" ) ;
float salary = rs. getFloat( "salary" ) ;
System. out . println( "ID = " + id ) ;
System. out . println( "NAME = " + name ) ;
System. out . println( "AGE = " + age ) ;
System. out . println( "ADDRESS = " + address ) ;
System. out . println( "SALARY = " + salary ) ;
System. out . println( ) ;
}
rs. close ( ) ;
stmt. close ( ) ;
c. close ( ) ;
} catch ( Exception e ) {
System. err. println( e. getClass( ) . getName( ) + ": " + e. getMessage( ) ) ;
System. exit ( 0 ) ;
}
System. out . println( "Operation done successfully" ) ;
}
}
Python接口
Python定义了一套操作数据库的API接口,任何数据库要连接到Python,只需要提供符合Python标准的数据库驱动即可。由于SQLite的驱动内置在Python标准库中,所以我们可以直接来操作SQLite数据库。
Python sqlite3 模块 API
连接数据库
import sqlite3
conn = sqlite3. connect( 'test.db' )
创建表
import sqlite3
conn = sqlite3. connect( 'test.db' )
print ( "数据库打开成功" )
c = conn. cursor( )
c. execute( '''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''' )
print ( "数据表创建成功" )
conn. commit( )
conn. close( )
INSERT 操作
import sqlite3
conn = sqlite3. connect( 'test.db' )
c = conn. cursor( )
print ( "数据库打开成功" )
c. execute( "INSERT INTO COMPANY ( ID, NAME, AGE, ADDRESS, SALARY) \
VALUES ( 1 , 'Paul' , 32 , 'California' , 20000.00 ) ")
c. execute( "INSERT INTO COMPANY ( ID, NAME, AGE, ADDRESS, SALARY) \
VALUES ( 2 , 'Allen' , 25 , 'Texas' , 15000.00 ) ")
c. execute( "INSERT INTO COMPANY ( ID, NAME, AGE, ADDRESS, SALARY) \
VALUES ( 3 , 'Teddy' , 23 , 'Norway' , 20000.00 ) ")
c. execute( "INSERT INTO COMPANY ( ID, NAME, AGE, ADDRESS, SALARY) \
VALUES ( 4 , 'Mark' , 25 , 'Rich-Mond ' , 65000.00 ) ")
conn. commit( )
print ( "数据插入成功" )
conn. close( )
SELECT 操作 =
import sqlite3
conn = sqlite3. connect( 'test.db' )
c = conn. cursor( )
print ( "数据库打开成功" )
cursor = c. execute( "SELECT id, name, address, salary from COMPANY" )
for row in cursor:
print "ID = " , row[ 0 ]
print "NAME = " , row[ 1 ]
print "ADDRESS = " , row[ 2 ]
print "SALARY = " , row[ 3 ] , "\n"
print ( "数据操作成功" )
conn. close( )
UPDATE 操作
import sqlite3
conn = sqlite3. connect( 'test.db' )
c = conn. cursor( )
print ( "数据库打开成功" )
c. execute( "UPDATE COMPANY set SALARY = 25000.00 where ID=1" )
conn. commit( )
print "Total number of rows updated :" , conn. total_changes
cursor = conn. execute( "SELECT id, name, address, salary from COMPANY" )
for row in cursor:
print "ID = " , row[ 0 ]
print "NAME = " , row[ 1 ]
print "ADDRESS = " , row[ 2 ]
print "SALARY = " , row[ 3 ] , "\n"
print ( "数据操作成功" )
conn. close( )
DELETE 操作
import sqlite3
conn = sqlite3. connect( 'test.db' )
c = conn. cursor( )
print ( "数据库打开成功" )
c. execute( "DELETE from COMPANY where ID=2;" )
conn. commit( )
print "Total number of rows deleted :" , conn. total_changes
cursor = conn. execute( "SELECT id, name, address, salary from COMPANY" )
for row in cursor:
print "ID = " , row[ 0 ]
print "NAME = " , row[ 1 ]
print "ADDRESS = " , row[ 2 ]
print "SALARY = " , row[ 3 ] , "\n"
print ( "数据操作成功" )
conn. close( )
案例
import os, sqlite3
db_file = os. path. join( os. path. dirname( __file__) , 'test.db' )
if os. path. isfile( db_file) :
os. remove( db_file)
conn = sqlite3. connect( db_file)
cursor = conn. cursor( )
cursor. execute( 'create table user(id varchar(20) primary key, name varchar(20), score int)' )
cursor. execute( r"insert into user values ('A-001', 'Adam', 95)" )
cursor. execute( r"insert into user values ('A-002', 'Bart', 62)" )
cursor. execute( r"insert into user values ('A-003', 'Lisa', 78)" )
conn. commit( )
cursor. close( )
conn. close( )
def get_score_in ( low, high) :
cursor. execute( "select * from user where score between(%s,%s)" , low, high)
assert get_score_in( 80 , 95 ) == [ 'Adam' ] , get_score_in( 80 , 95 )
assert get_score_in( 60 , 80 ) == [ 'Bart' , 'Lisa' ] , get_score_in( 60 , 80 )
assert get_score_in( 60 , 100 ) == [ 'Bart' , 'Lisa' , 'Adam' ] , get_score_in( 60 , 100 )
print ( "successful" )
你可能感兴趣的:(数据库,sqlite)
Google earth studio 简介
陟彼高冈yu
旅游
GoogleEarthStudio是一个基于Web的动画工具,专为创作使用GoogleEarth数据的动画和视频而设计。它利用了GoogleEarth强大的三维地图和卫星影像数据库,使用户能够轻松地创建逼真的地球动画、航拍视频和动态地图可视化。网址为https://www.google.com/earth/studio/。GoogleEarthStudio是一个基于Web的动画工具,专为创作使用G
关于提高复杂业务逻辑代码可读性的思考
编程经验分享
开发经验 java 数据库 开发语言
目录前言需求场景常规写法拆分方法领域对象总结前言实际工作中大部分时间都是在写业务逻辑,一般都是三层架构,表示层(Controller)接收客户端请求,并对入参做检验,业务逻辑层(Service)负责处理业务逻辑,一般开发都是在这一层中写具体的业务逻辑。数据访问层(Dao)是直接和数据库交互的,用于查数据给业务逻辑层,或者是将业务逻辑层处理后的数据写入数据库。简单的增删改查接口不用多说,基本上写好一
SQL Server_查询某一数据库中的所有表的内容
qq_42772833
SQL Server 数据库 sqlserver
1.查看所有表的表名要列出CrabFarmDB数据库中的所有表(名),可以使用以下SQL语句:USECrabFarmDB;--切换到目标数据库GOSELECTTABLE_NAMEFROMINFORMATION_SCHEMA.TABLESWHERETABLE_TYPE='BASETABLE';对这段SQL脚本的解释:SELECTTABLE_NAME:这个语句的作用是从查询结果中选择TABLE_NAM
深入理解 MultiQueryRetriever:提升向量数据库检索效果的强大工具
nseejrukjhad
数据库 python
深入理解MultiQueryRetriever:提升向量数据库检索效果的强大工具引言在人工智能和自然语言处理领域,高效准确的信息检索一直是一个关键挑战。传统的基于距离的向量数据库检索方法虽然广泛应用,但仍存在一些局限性。本文将介绍一种创新的解决方案:MultiQueryRetriever,它通过自动生成多个查询视角来增强检索效果,提高结果的相关性和多样性。MultiQueryRetriever的工
MongoDB Oplog 窗口
喝醉酒的小白
MongoDB 运维
在MongoDB中,oplog(操作日志)是一个特殊的日志系统,用于记录对数据库的所有写操作。oplog允许副本集成员(通常是从节点)应用主节点上已经执行的操作,从而保持数据的一致性。它是MongoDB副本集实现数据复制的基础。MongoDBOplog窗口oplog窗口是指在MongoDB副本集中,从节点可以用来同步数据的时间范围。这个窗口通常由以下因素决定:Oplog大小:oplog的大小是有限
python os 环境变量
CV矿工
python 开发语言 numpy
环境变量:环境变量是程序和操作系统之间的通信方式。有些字符不宜明文写进代码里,比如数据库密码,个人账户密码,如果写进自己本机的环境变量里,程序用的时候通过os.environ.get()取出来就行了。os.environ是一个环境变量的字典。环境变量的相关操作importos"""设置/修改环境变量:os.environ[‘环境变量名称’]=‘环境变量值’#其中key和value均为string类
【PG】常见数据库、表属性设置
江无羡
数据库
PG的常见属性配置方法数据库复制、备份相关表的复制标识单表操作批量表操作链接数据库复制、备份相关表的复制标识单表操作通过ALTER语句单独更改一张表的复制标识。ALTERTABLE[tablename]REPLICAIDENTITYFULL;批量表操作通过代码块的方式,对某个schema中的所有表一起更新其复制标识。SELECTtablename,CASErelreplidentWHEN'd'TH
nosql数据库技术与应用知识点
皆过客,揽星河
NoSQL nosql 数据库 大数据 数据分析 数据结构 非关系型数据库
Nosql知识回顾大数据处理流程数据采集(flume、爬虫、传感器)数据存储(本门课程NoSQL所处的阶段)Hdfs、MongoDB、HBase等数据清洗(入仓)Hive等数据处理、分析(Spark、Flink等)数据可视化数据挖掘、机器学习应用(Python、SparkMLlib等)大数据时代存储的挑战(三高)高并发(同一时间很多人访问)高扩展(要求随时根据需求扩展存储)高效率(要求读写速度快)
insert into select 主键自增_mybatis拦截器实现主键自动生成
weixin_39521651
insert into select 主键自增 mybatis delete返回值 mybatis insert返回主键 mybatis insert返回对象 mybatis plus insert返回主键 mybatis plus 插入生成id
前言前阵子和朋友聊天,他说他们项目有个需求,要实现主键自动生成,不想每次新增的时候,都手动设置主键。于是我就问他,那你们数据库表设置主键自动递增不就得了。他的回答是他们项目目前的id都是采用雪花算法来生成,因此为了项目稳定性,不会切换id的生成方式。朋友问我有没有什么实现思路,他们公司的orm框架是mybatis,我就建议他说,不然让你老大把mybatis切换成mybatis-plus。mybat
关于Mysql 中 Row size too large (> 8126) 错误的解决和理解
秋刀prince
mysql mysql 数据库
提示:啰嗦一嘴,数据库的任何操作和验证前,一定要记得先备份!!!不会有错;文章目录问题发现一、问题导致的可能原因1、页大小2、行格式2.1compact格式2.2Redundant格式2.3Dynamic格式2.4Compressed格式3、BLOB和TEXT列二、解决办法1、修改页大小(不推荐)2、修改行格式3、修改数据类型为BLOB和TEXT列4、其他优化方式(可以参考使用)4.1合理设置数据
Java爬虫框架(一)--架构设计
狼图腾-狼之传说
java 框架 java 任务 html解析器 存储 电子商务
一、架构图那里搜网络爬虫框架主要针对电子商务网站进行数据爬取,分析,存储,索引。爬虫:爬虫负责爬取,解析,处理电子商务网站的网页的内容数据库:存储商品信息索引:商品的全文搜索索引Task队列:需要爬取的网页列表Visited表:已经爬取过的网页列表爬虫监控平台:web平台可以启动,停止爬虫,管理爬虫,task队列,visited表。二、爬虫1.流程1)Scheduler启动爬虫器,TaskMast
MongoDB知识概括
GeorgeLin98
持久层 mongodb
MongoDB知识概括MongoDB相关概念单机部署基本常用命令索引-IndexSpirngDataMongoDB集成副本集分片集群安全认证MongoDB相关概念业务应用场景:传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高”需求:①Highperformance-对数据库高并发读写的需求。②HugeStorage-对海量数
Mongodb Error: queryTxt ETIMEOUT xxxx.wwwdz.mongodb.net
佛一脚
error react mongodb 数据库
背景每天都能遇到奇怪的问题,做个记录,以便有缘人能得到帮助!换了一台电脑开发nextjs程序。需要连接mongodb数据,对数据进行增删改查。上一台电脑好好的程序,新电脑死活连不上mongodb数据库。同一套代码,没任何修改,搞得我怀疑人生了,打开浏览器进入mongodb官网毫无问题,也能进入线上系统查看数据,网络应该是没问题。于是我尝试了一下手机热点,这次代码能正常跑起来,连接数据库了!!!是不
入门MySQL——查询语法练习
K_un
前言:前面几篇文章为大家介绍了DML以及DDL语句的使用方法,本篇文章将主要讲述常用的查询语法。其实MySQL官网给出了多个示例数据库供大家实用查询,下面我们以最常用的员工示例数据库为准,详细介绍各自常用的查询语法。1.员工示例数据库导入官方文档员工示例数据库介绍及下载链接:https://dev.mysql.com/doc/employee/en/employees-installation.h
博客网站制作教程
2401_85194651
java maven
首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java
ubuntu安装wordpress
lissettecarlr
1安装nginx网上安装方式很多,这就就直接用apt-get了apt-getinstallnginx不用启动啥,然后直接在浏览器里面输入IP:80就能看到nginx的主页了。如果修改了一些配置可以使用下列命令重启一下systemctlrestartnginx.service2安装mysql输入安装前也可以更新一下软件源,在安装过程中将会让你输入数据库的密码。sudoapt-getinstallmy
深入浅出 -- 系统架构之负载均衡Nginx的性能优化
xiaoli8748_软件开发
系统架构 系统架构 负载均衡 nginx
一、Nginx性能优化到这里文章的篇幅较长了,最后再来聊一下关于Nginx的性能优化,主要就简单说说收益最高的几个优化项,在这块就不再展开叙述了,毕竟影响性能都有多方面原因导致的,比如网络、服务器硬件、操作系统、后端服务、程序自身、数据库服务等,对于性能调优比较感兴趣的可以参考之前《JVM性能调优》中的调优思想。优化一:打开长连接配置通常Nginx作为代理服务,负责分发客户端的请求,那么建议开启H
【RabbitMQ 项目】服务端:数据管理模块之绑定管理
月夜星辉雪
rabbitmq 分布式
文章目录一.编写思路二.代码实践一.编写思路定义绑定信息类交换机名称队列名称绑定关键字:交换机的路由交换算法中会用到没有是否持久化的标志,因为绑定是否持久化取决于交换机和队列是否持久化,只有它们都持久化时绑定才需要持久化。绑定就好像一根绳子,两端连接着交换机和队列,当一方不存在,它就没有存在的必要了定义绑定持久化类构造函数:如果数据库文件不存在则创建,打开数据库,创建binding_table插入
计算机毕业设计PHP仓储综合管理系统(源码+程序+VUE+lw+部署)
java毕设程序源码王哥
php 课程设计 vue.js
该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流项目运行环境配置:phpStudy+Vscode+Mysql5.7+HBuilderX+Navicat11+Vue+Express。项目技术:原生PHP++Vue等等组成,B/S模式+Vscode管理+前后端分离等等。环境需要1.运行环境:最好是小皮phpstudy最新版,我们在这个版本上开发的。其他版本理论上也可以。2.开发
3.增删改查--连接查询
问女何所忆
关系型数据库的一个特点就是,多张表之间存在关系,以致于我们可以连接多张表进行查询操作,所以连接查询会是关系型数据库中最常见的操作。连接查询主要分为三种,交叉连接、内连接和外连接,我们一个个说。1、交叉连接交叉连接其实连接查询的第一个阶段,它简单表现为两张表的笛卡尔积形式,具体例子:如果你没学过数学中的笛卡尔积概念,你可以这样简单的理解这里的交叉连接:两张表的交叉连接就是一个连接合并的过程,T1表中
docker from指令的含义_多个FROM-含义
weixin_39722188
docker from指令的含义
小编典典什么是基本图片?一组文件,加上EXPOSE端口ENTRYPOINT和CMD。您可以添加文件并基于该基础图像构建新图像,Dockerfile并以FROM指令开头:后面提到的图像FROM是新图像的“基础图像”。这是否意味着如果我neo4j/neo4j在FROM指令中声明,则在运行映像时,neo数据库将自动运行并且可在端口7474的容器中使用?仅当您不覆盖CMD和时ENTRYPOINT。但是图像
Redis:缓存击穿
我的程序快快跑啊
缓存 redis java
缓存击穿(热点key):部分key(被高并发访问且缓存重建业务复杂的)失效,无数请求会直接到数据库,造成巨大压力1.互斥锁:可以保证强一致性线程一:未命中之后,获取互斥锁,再查询数据库重建缓存,写入缓存,释放锁线程二:查询未命中,未获得锁(已由线程一获得),等待一会,缓存命中互斥锁实现方式:redis中setnxkeyvalue:改变对应key的value,仅当value不存在时执行,以此来实现互
mysql学习教程,从入门到精通,TOP 和MySQL LIMIT 子句(15)
知识分享小能手
大数据 数据库 MySQL mysql 学习 oracle 数据库 开发语言 adb 大数据
1、TOP和MySQLLIMIT子句内容在SQL中,不同的数据库系统对于限制查询结果的数量有不同的实现方式。TOP关键字主要用于SQLServer和Access数据库中,而LIMIT子句则主要用于MySQL、PostgreSQL(通过LIMIT/OFFSET语法)、SQLite等数据库中。下面将分别详细介绍这两个功能的语法、语句以及案例。1.1、TOP子句(SQLServer和Access)1.1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
†徐先森®
Oracle数据库 Web相关 错误集
createtablestudents(idintunsignedprimarykeyauto_increment,namevarchar(50)notnull,ageintunsigned,highdecimal(3,2),genderenum('男','女','中性','保密','妖')default'保密',cls_idintunsigned);在对数据库插入如上带有中文带有默认值的字段的时
Redis 有哪些危险命令?如何防范?
花小疯
redis 缓存 数据库 危险命令 大数据
Redis有哪些危险命令?Redis的危险命令主要有以下几个:1.keys客户端可查询出所有存在的键。2.flushdb删除Redis中当前所在数据库中的所有记录,并且此命令从不会执行失败。3.flushall删除Redis中所有数据库中的所有记录,不止是当前所在数据库,并且此命令从不会执行失败。4.config客户端可修改Redis配置。怎么禁用和重命名危险命令?看下redis.conf默认配置
【Golang】 Golang 的 GORM 库中的 Rows 函数
不爱洗脚的小滕
golang 开发语言 后端
文章目录前言一、Rows函数解释二、代码实现三、总结前言在使用Go语言进行数据库操作时,GORM(GoObject-RelationalMapping)库是一个常用的工具。它提供了一种简洁和强大的方式来处理数据库操作。本文将介绍GORM库中的Rows函数,这是一个用于执行原生SQL查询并返回结果的函数。一、Rows函数解释在GORM库中,Rows函数用于执行原生SQL查询并返回*sql.Rows结
接口测试如何设计测试用例
李蕴Ronnie
接口测试用例设计方式针对每个必填参数,都设计一条参数为空的测试用例必填参数不存在传的参数值在数据库中不存在添加数据接口,传入已有的数据重复添加编辑数据接口,各个字段分别编辑,合并编辑参数数据类型限制,针对每个参数设计一条参数值类型不符合的逆向用例参数自身取值范围,针对所有参数,设计一条每个参数值在取值范围内最大值的正向测试用例是否满足前提条件(token、headers),几个前提条件几条用例针对
Hadoop架构
henan程序媛
hadoop 大数据 分布式
一、案列分析1.1案例概述现在已经进入了大数据(BigData)时代,数以万计用户的互联网服务时时刻刻都在产生大量的交互,要处理的数据量实在是太大了,以传统的数据库技术等其他手段根本无法应对数据处理的实时性、有效性的需求。HDFS顺应时代出现,在解决大数据存储和计算方面有很多的优势。1.2案列前置知识点1.什么是大数据大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的大量数据集合,
非关系型数据库
天秤-white
nosql
一、为什么要用Nosql1.单机MySQL的时代。一个基本的网站访问量一般不会太大,单个数据库完全足够。那时候更多使用的静态网页html,服务器根本没有太大压力。这时候网站的瓶颈是什么?-数据量如果太大,一个机器放不下。-数据量太大需要建立数据的索引(B+Tree),一个服务器内存放不下。-访问量读写混合,一个服务器承受不了。2.memcached缓存+MySQL+垂直拆分(读写分离)。网站80%
六、全局锁和表锁:给表加个字段怎么有这么多阻碍
nieniemin
数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。6.1全局锁全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是Flushtableswithreadlock(FTWRL)。当你需要让整个库处于
JAVA中的Enum
周凡杨
java enum 枚举
Enum是计算机编程语言中的一种数据类型---枚举类型。 在实际问题中,有些变量的取值被限定在一个有限的范围内。 例如,一个星期内只有七天 我们通常这样实现上面的定义:
public String monday;
public String tuesday;
public String wensday;
public String thursday
赶集网mysql开发36条军规
Bill_chen
mysql 业务架构设计 mysql调优 mysql性能优化
(一)核心军规 (1)不在数据库做运算 cpu计算务必移至业务层; (2)控制单表数据量 int型不超过1000w,含char则不超过500w; 合理分表; 限制单库表数量在300以内; (3)控制列数量 字段少而精,字段数建议在20以内
Shell test命令
daizj
shell 字符串 test 数字 文件比较
Shell test命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则为真 -lt 小于则为真 -le 小于等于则为真
实例演示:
num1=100
num2=100if test $[num1]
XFire框架实现WebService(二)
周凡杨
java webservice
有了XFire框架实现WebService(一),就可以继续开发WebService的简单应用。
Webservice的服务端(WEB工程):
两个java bean类:
Course.java
package cn.com.bean;
public class Course {
private
重绘之画图板
朱辉辉33
画图板
上次博客讲的五子棋重绘比较简单,因为只要在重写系统重绘方法paint()时加入棋盘和棋子的绘制。这次我想说说画图板的重绘。
画图板重绘难在需要重绘的类型很多,比如说里面有矩形,园,直线之类的,所以我们要想办法将里面的图形加入一个队列中,这样在重绘时就
Java的IO流
西蜀石兰
java
刚学Java的IO流时,被各种inputStream流弄的很迷糊,看老罗视频时说想象成插在文件上的一根管道,当初听时觉得自己很明白,可到自己用时,有不知道怎么代码了。。。
每当遇到这种问题时,我习惯性的从头开始理逻辑,会问自己一些很简单的问题,把这些简单的问题想明白了,再看代码时才不会迷糊。
IO流作用是什么?
答:实现对文件的读写,这里的文件是广义的;
Java如何实现程序到文件
No matching PlatformTransactionManager bean found for qualifier 'add' - neither
林鹤霄
java.lang.IllegalStateException: No matching PlatformTransactionManager bean found for qualifier 'add' - neither qualifier match nor bean name match!
网上找了好多的资料没能解决,后来发现:项目中使用的是xml配置的方式配置事务,但是
Row size too large (> 8126). Changing some columns to TEXT or BLOB
aigo
column
原文:http://stackoverflow.com/questions/15585602/change-limit-for-mysql-row-size-too-large
异常信息:
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAM
JS 格式化时间
alxw4616
JavaScript
/**
* 格式化时间 2013/6/13 by 半仙
[email protected]
* 需要 pad 函数
* 接收可用的时间值.
* 返回替换时间占位符后的字符串
*
* 时间占位符:年 Y 月 M 日 D 小时 h 分 m 秒 s 重复次数表示占位数
* 如 YYYY 4占4位 YY 占2位<p></p>
* MM DD hh mm
队列中数据的移除问题
百合不是茶
队列移除
队列的移除一般都是使用的remov();都可以移除的,但是在昨天做线程移除的时候出现了点问题,没有将遍历出来的全部移除, 代码如下;
//
package com.Thread0715.com;
import java.util.ArrayList;
public class Threa
Runnable接口使用实例
bijian1013
java thread Runnable java多线程
Runnable接口
a. 该接口只有一个方法:public void run();
b. 实现该接口的类必须覆盖该run方法
c. 实现了Runnable接口的类并不具有任何天
oracle里的extend详解
bijian1013
oracle 数据库 extend
扩展已知的数组空间,例:
DECLARE
TYPE CourseList IS TABLE OF VARCHAR2(10);
courses CourseList;
BEGIN
-- 初始化数组元素,大小为3
courses := CourseList('Biol 4412 ', 'Psyc 3112 ', 'Anth 3001 ');
--
【httpclient】httpclient发送表单POST请求
bit1129
httpclient
浏览器Form Post请求
浏览器可以通过提交表单的方式向服务器发起POST请求,这种形式的POST请求不同于一般的POST请求
1. 一般的POST请求,将请求数据放置于请求体中,服务器端以二进制流的方式读取数据,HttpServletRequest.getInputStream()。这种方式的请求可以处理任意数据形式的POST请求,比如请求数据是字符串或者是二进制数据
2. Form
【Hive十三】Hive读写Avro格式的数据
bit1129
hive
1. 原始数据
hive> select * from word;
OK
1 MSN
10 QQ
100 Gtalk
1000 Skype
2. 创建avro格式的数据表
hive> CREATE TABLE avro_table(age INT, name STRING)STORE
nginx+lua+redis自动识别封解禁频繁访问IP
ronin47
在站点遇到攻击且无明显攻击特征,造成站点访问慢,nginx不断返回502等错误时,可利用nginx+lua+redis实现在指定的时间段 内,若单IP的请求量达到指定的数量后对该IP进行封禁,nginx返回403禁止访问。利用redis的expire命令设置封禁IP的过期时间达到在 指定的封禁时间后实行自动解封的目的。
一、安装环境:
CentOS x64 release 6.4(Fin
java-二叉树的遍历-先序、中序、后序(递归和非递归)、层次遍历
bylijinnan
java
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
public class BinTreeTraverse {
//private int[] array={ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
private int[] array={ 10,6,
Spring源码学习-XML 配置方式的IoC容器启动过程分析
bylijinnan
java spring IOC
以FileSystemXmlApplicationContext为例,把Spring IoC容器的初始化流程走一遍:
ApplicationContext context = new FileSystemXmlApplicationContext
("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml&q
[科研与项目]民营企业请慎重参与军事科技工程
comsci
企业
军事科研工程和项目 并非要用最先进,最时髦的技术,而是要做到“万无一失”
而民营科技企业在搞科技创新工程的时候,往往考虑的是技术的先进性,而对先进技术带来的风险考虑得不够,在今天提倡军民融合发展的大环境下,这种“万无一失”和“时髦性”的矛盾会日益凸显。。。。。。所以请大家在参与任何重大的军事和政府项目之前,对
spring 定时器-两种方式
cuityang
spring quartz 定时器
方式一:
间隔一定时间 运行
<bean id="updateSessionIdTask" class="com.yang.iprms.common.UpdateSessionTask" autowire="byName" />
<bean id="updateSessionIdSchedule
简述一下关于BroadView站点的相关设计
damoqiongqiu
view
终于弄上线了,累趴,戳这里http://www.broadview.com.cn
简述一下相关的技术点
前端:jQuery+BootStrap3.2+HandleBars,全站Ajax(貌似对SEO的影响很大啊!怎么破?),用Grunt对全部JS做了压缩处理,对部分JS和CSS做了合并(模块间存在很多依赖,全部合并比较繁琐,待完善)。
后端:U
运维 PHP问题汇总
dcj3sjt126com
windows2003
1、Dede(织梦)发表文章时,内容自动添加关键字显示空白页
解决方法:
后台>系统>系统基本参数>核心设置>关键字替换(是/否),这里选择“是”。
后台>系统>系统基本参数>其他选项>自动提取关键字,这里选择“是”。
2、解决PHP168超级管理员上传图片提示你的空间不足
网站是用PHP168做的,反映使用管理员在后台无法
mac 下 安装php扩展 - mcrypt
dcj3sjt126com
PHP
MCrypt是一个功能强大的加密算法扩展库,它包括有22种算法,phpMyAdmin依赖这个PHP扩展,具体如下:
下载并解压libmcrypt-2.5.8.tar.gz。
在终端执行如下命令: tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure --disable-posix-threads --
MongoDB更新文档 [四]
eksliang
mongodb Mongodb更新文档
MongoDB更新文档
转载请出自出处:http://eksliang.iteye.com/blog/2174104
MongoDB对文档的CURD,前面的博客简单介绍了,但是对文档更新篇幅比较大,所以这里单独拿出来。
语法结构如下:
db.collection.update( criteria, objNew, upsert, multi)
参数含义 参数  
Linux下的解压,移除,复制,查看tomcat命令
y806839048
tomcat
重复myeclipse生成webservice有问题删除以前的,干净
1、先切换到:cd usr/local/tomcat5/logs
2、tail -f catalina.out
3、这样运行时就可以实时查看运行日志了
Ctrl+c 是退出tail命令。
有问题不明的先注掉
cp /opt/tomcat-6.0.44/webapps/g
Spring之使用事务缘由(3-XML实现)
ihuning
spring
用事务通知声明式地管理事务
事务管理是一种横切关注点。为了在 Spring 2.x 中启用声明式事务管理,可以通过 tx Schema 中定义的 <tx:advice> 元素声明事务通知,为此必须事先将这个 Schema 定义添加到 <beans> 根元素中去。声明了事务通知后,就需要将它与切入点关联起来。由于事务通知是在 <aop:
GCD使用经验与技巧浅谈
啸笑天
GC
前言
GCD(Grand Central Dispatch)可以说是Mac、iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧。
dispatch_once_t必须是全局或static变量
这一条算是“老生常谈”了,但我认为还是有必要强调一次,毕竟非全局或非static的dispatch_once_t变量在使用时会导致非常不好排查的bug,正确的如下: 1
linux(Ubuntu)下常用命令备忘录1
macroli
linux 工作 ubuntu
在使用下面的命令是可以通过--help来获取更多的信息1,查询当前目录文件列表:ls
ls命令默认状态下将按首字母升序列出你当前文件夹下面的所有内容,但这样直接运行所得到的信息也是比较少的,通常它可以结合以下这些参数运行以查询更多的信息:
ls / 显示/.下的所有文件和目录
ls -l 给出文件或者文件夹的详细信息
ls -a 显示所有文件,包括隐藏文
nodejs同步操作mysql
qiaolevip
学习永无止境 每天进步一点点 mysql nodejs
// db-util.js
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 10,
host: 'localhost',
user: 'root',
password: '',
database: 'test',
port: 3306
});
一起学Hive系列文章
superlxw1234
hive Hive入门
[一起学Hive]系列文章 目录贴,入门Hive,持续更新中。
[一起学Hive]之一—Hive概述,Hive是什么
[一起学Hive]之二—Hive函数大全-完整版
[一起学Hive]之三—Hive中的数据库(Database)和表(Table)
[一起学Hive]之四-Hive的安装配置
[一起学Hive]之五-Hive的视图和分区
[一起学Hive
Spring开发利器:Spring Tool Suite 3.7.0 发布
wiselyman
spring
Spring Tool Suite(简称STS)是基于Eclipse,专门针对Spring开发者提供大量的便捷功能的优秀开发工具。
在3.7.0版本主要做了如下的更新:
将eclipse版本更新至Eclipse Mars 4.5 GA
Spring Boot(JavaEE开发的颠覆者集大成者,推荐大家学习)的配置语言YAML编辑器的支持(包含自动提示,