是这样的,
访问数据库的方式写成静态,并不是所有的都是静态。
即,把数据库连接写成静态。
而查询、删除、修改不能写成静态。
这样后,所有的用户,连接是同一个。
B. 什么叫动态数据库,什么叫静态数据库
动态数据库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源。动态数据库提供了一种方法,使进程可以调用不属于其可执行代码的函数。
静态数据库是一种用户模块。它提供了函数的完整的目标代码。在静态库情况下,函数和数据被编译进一个二进制文件,Visual C++的编译器在处理程序代码时,将从静态库中恢复这些函数和数据并把他们和应用程序中的其他模块组合在一起生成可执行文件。
(2)数据库静态方法扩展阅读:
动态装入动态数据库,要用到Windows的三个API函数,即Loadlibrary、Freelibrary和GetprocAddress函数。
1、Loadlibrary函数调用格式为:function loadlobrary (DdfileName:Pchar): THandle:。
2、、当不再需要一个动态数据库时,应调用FreeLibrary函数将其释放。
FreeLibrary函数调用格式:procere FreeLibrary (Libmole:THandle)。
3、用GetprocAddress函数把动态数据库中函数的地址传递给程序中某个函数变量,再用该变量实现动态数据库函数的调用。
GetprocAddress函数格式:function GetprocAddress (Libmole:THandle:procname:pchar):TFarProc:。
C. 在C#程序中连接数据库不能用公共静态的方法是怎样的
不要设一个全局静态连接对象,所有数据库连接都使用这一个连接对象,那样性能会很差。
数据库连接对象随用随创建,用完就尽快关闭,如果短时间内有多个数据库操作执行,那么可以在这几个操作间共享连接对象。
D. 数据库增删改查用静态方法实现好还是实例方法实现好
java连接数据库,你可以用一些框架,比如hibernate,iBATIS等,这样方便一点,否则你就用JDBC吧,自己写sql语句:
JDBC连接数据库
•创建一个以JDBC连接数据库的程序,包含7个步骤:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过java.lang.Class类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
•要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
该对象就代表一个数据库的连接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
4、创建一个Statement
•要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3
种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
语句。
具体实现的代码:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
E. 如何将数据库中的内容生成静态页面
现在很多看似是静态页面其实是使用了URL重定向组件 Isapirewrite这个东西,里面一样的是动态的页面。
如果非要生成静态页面可以写一个生成的母版页再加载数据库数据生成。
首先在模板页里把页面布局啊什么的都做好。然后在后台页面里提取该页面,再把数据库数据写入到里面的对应标签里。最后再生成一个新的页面就行了。
F. 如何维护数据库中的静态表
我认为在任何应用程序、系统的数据库中或多或少都会有一些静态表用来存放系统中一些默认的值,比如说界面上的一些field信息、一些数据模板、界面上的选项设置等等。我们不可能把这些东西都hard code到代码中去,所以必然需要这些静态的数据表来存放这些信息。可能你会觉得手动去维护这些静态表就挺好,但是我认为在任何情况下我们都不应该手动的去修改数据库中的数据,这样可能会导致脏数据或者其他未知问题。设想一下,如果你的系统有开发和测试两个数据库,又同时需要支持SQL-SERVER和ORACLE两种数据库,那么你就需要维护四个数据库,当数据库数量增加手动维护明显是不可能的一件事情。
我认为可以通过将静态数据表中的数据保存在一些文件中,然后通过一些工具将这些文件导入到各个数据库中,同时还可以将这些文件放在版本控制库里,这样就可以追踪到每一个对静态表的修改。我设想了一下这个简单的模型。
如上图所示,更新工具去读配置文件,然后根据配置文件将静态表文件中的数据更新到指定的一些数据库中去。静态表文件中包含了静态表的一些基本数据,数据库配置包含了一些数据库的链接信息。而配置文件则是关键,它包含了一些静态表文件和数据库配置文件,同时也应该包含静态表文件与数据库中表的映射关系。
我觉得通过这种方式可以比较好的控制数据库中静态表,如果是应用程序,在部署的时候只要配置一些数据库和数据库文件,应该就能很快的将静态数据导入数据库表。
G. 数据库增删改查用静态方法实现好还是实例方
不建议使用静态的,还是每次 new 一个出来比较踏实。
静态的在任何一个地方崩溃掉,全局就OVER了。
H. 如何提交jap表单数据插入数mysql据库factory有静态方法
1.将选中的数据快儿拷贝到一个TXT文本文件中(记得把后面的空格消掉。。否则导入数据库后会有对应的空行),假如存到“D:\data.txt”这个位置里。
2.根据要导入的数据快儿建立MySql数据库和表,然后进入命令提示符里使用命令
load data local infile 'D:/data.txt' into table exceltomysql fields terminated by '\t';
注意:盘符我使用的“/”才成功,否则提示找不到文件 下面文章中是用的“\”!
进行导入操作
手动进行Excel数据和MySql数据转换
2006年09月16日 星期六 下午 02:44
今天是全国数学建模比赛,同学选的一个题目需要对一个large的Excel表格进行统计,好哥们儿嘛~~便帮助他完成了数据从Excel到MySql的转化。记下具体步骤分享给大家,也免得大家到网上到处乱找了。
假如要把如图所示的Excel表格导入到MySql数据库中,如图:
,
步骤一:
选取要导入的数据快儿,另外要多出一列,如下图:
步骤二:
将选中的数据快儿拷贝到一个新建的表格工作薄,然后“另存为” -》“文本文件(制表符分割)(*.txt)”,假如存到“D:\data.txt”这个位置里。如图:
步骤三:
根据要导入的数据快儿建立MySql数据库和表,然后使用命令
load data local infile 'D:\data.txt' into table exceltomysql fields terminated by '\t';
进行导入操作。如下图:
现在数据已经全部导入到MySql里了,
让我们来select一下吧,如图:
到此,数据由Excel到MySql的转换已经完成。
下面说下,数据从MySql到Excel的转化,其过程其实还是借助那个“制表符分割”的文本文件。
将如要将这个表中的男生信息导入到Excel中,可以这样。
select * into outfile 'D:\man.txt' from exceltomysql where xingbie="男";
如图:
这样,表中所有男生的信息都被输出到以制表符分割,'\n'结尾的文本文件D:\man.txt文件中。
你可以打开Excel,然后选择“数据”->“导入外部数据”->“导入数据”,选中“D:\man.txt”,一路确定就行了。
注意:这个方法我用过虽然可以插入到mysql数据库中,但是有乱码的危险。所以我更推荐使用下面的方法。
方法二:此方法是博友TVBBOY整理,我根据自己遇到的情况重新总结如下:
准备工作: PHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader 我用的是2007-07-06的那个压缩文件,下载后用到\phpExcelReader\Excel目录下的oleread.inc和reader.php两个文件,并将reader.php文件打开后require_once 'Spreadsheet/Excel/Reader/OLERead.php';屏蔽掉,增加为require_once 'oleread.inc'; 然后直接将这两个文件复制到服务器下,我用的是WAMP,我直接复制到WWW目录下,再将所需要的excel文件考进来我的文件是classify.xls,然后需要一个调用reader.php的文件,源代码如下:
ExcelToMysql.php
<?php
require_once 'reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');
$data->read('classify.xls'); //”classify.xls”是指要导入到mysql中的excel文件
@ $db = mysql_connect("localhost", "root", "") or
die("Could not connect to database.");//连接数据库
mysql_query("set names 'gbk'");//输出中文
mysql_select_db('japlearn'); //选择数据库
error_reporting(E_ALL ^ E_NOTICE);
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
//以下注释的for循环打印excel表数据
//以下代码是将excel表数据【6个字段】插入到mysql中,根据你的excel表字段的多少,改写以下代码吧!
$sql = "INSERT INTO classify VALUES('".
$data->sheets[0]['cells'][$i][1]."','".
$data->sheets[0]['cells'][$i][2]."','".
$data->sheets[0]['cells'][$i][3]."','".
$data->sheets[0]['cells'][$i][4]."','".$data->sheets[0]['cells'][$i][5]."','".$data->sheets[0]['cells'][$i][6]."')";
echo $sql.'<br />';
$res = mysql_query($sql);
}
?>
文中红色标注为需要注意的地方,请替换成你配置好的数据,如数据库配置等。运行http://localost/ExcelToMysql.php实现导入。
I. static的方法怎么调用数据库
全局变量前加上关键字static,全局变量就定义成一个全局静态变量.,全局静态变量存储在静态存储区,在整个程序运行期间一直存在。全局静态变量在程序运行之前就存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化)。作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。
局部静态数据
在局部变量之前加上关键字static,局部变量就成为一个局部静态变量。局部静态变量再程序执行到作用域时候,就会存在。
局部静态数据再内存中的静态存储区。
初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化)。
作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域结束。但是当局部静态变量离开作用域后,并没有销毁,而是仍然驻留在内存当中,只不过我们不能再对它进行访问,直到该函数再次被调用,并且值不变。
静态函数
在函数返回类型前加static,函数就定义为静态函数。函数的定义和声明在默认情况下都是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。
函数的实现使用static修饰,那么这个函数只可在本cpp内使用,不会同其他cpp中的同名函数引起冲突。
warning:不要再头文件中声明static的全局函数,不要在cpp内声明非static的全局函数,如果你要在多个cpp中复用该函数,就把它的声明提到头文件里去,否则cpp内部声明需加上static修饰。
类的静态成员
静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。
静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在类的构造函数中初始化该成员,因为静态数据成员为类的各个对象共享,否则每次创建一个类的对象则静态数据成员都要被重新初始化静态成员可以被初始化,但只能在类体外进行初始化。 一般形式:数据类型 类名::静态数据成员名=初值。
静态成员不可在类体内进行赋值,因为它是被所有该类的对象所共享的。你在一个对象里给它赋值,其他对象里的该成员也会发生变化。
静态成员属于整个类所有,不需要依赖任何对象,它在对象中不占用存储空间。
静态成员仍然遵循public,