完整数据库代码(完整数据库代码是什么)[20240424更新]
admin 发布:2024-04-24 10:05 116
今天给各位分享完整数据库代码的知识,其中也会对完整数据库代码是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java连接数据库的代码
package mysql;
import java.sql.*;
/**
* @author xys
*/
public class ConnectMysql {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
String url = "jdbc:mysql://localhost:3306/databaseName";
String user = "mysqluser";
String password = "password";
String driverClass = "com.mysql.cj.jdbc.Driver";
Connection connection = null;
Class.forName(driverClass);
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
if (connection != null) {
System.out.println("数据库连接成功");
} else {
System.out.println("数据库连接失败");
connection.close();
}
return connection;
}
public void getResult() throws ClassNotFoundException, SQLException {
// 实例化 Statement 对象
Statement statement = getConnection().createStatement();
// 要执行的 Mysql 数据库操作语句(增、删、改、查)
String sql = "";
// 展开结果集数据库
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
// 通过字段检索
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
// 输出数据
System.out.println("ID : " +id);
System.out.println("name :" + name);
}
// 完成后需要依次关闭
resultSet.close();
statement.close();
getConnection().close();
}
}
SQL数据库外键代码
1.创建主测试表(test_class),
Createtabletest_class(class_idnumber,class_namevarchar2(20));
2.创建test100子表(学生表test_student),
Createtabletest_student(stu_idnumber,stu_namevarchar2(200),class_idnumber);
3.向主表(类表test_class)添加唯一的主键,
altertableTEST_CLASS
Addconstraintpk_class_idprimarykey(CLASS_ID);
4.子表(test_student)创建一个外键,
alter表TEST_STUDENT
添加约束fk_class_id外键(CLASS_ID)
参考test_class(CLASS_ID);
扩展资料:
1.高可用性:
分布式组织的可扩展性,决策支持的数据仓库功能,与许多其他服务器软件紧密相关的集成,良好的性价比,等等。
2.数据管理和分析的灵活性:
允许单位在快速变化的环境中做出冷静的反应,从而获得竞争优势。从数据管理和分析的角度来看,将原始数据转换为商业智能并充分利用Web的机会是很重要的。
作为一个完整的数据库和数据分析软件包,SQLServer为新一代企业业务应用的快速发展,为企业赢得核心竞争优势打开了胜利之门。
oc读取mysql数据库数据完整代码?
给你个例子供你参考
span style="font-size:14px;"#import "StudentDataBase.h"
#import "DB.h"
#import "StudentModel.h"
@implementation StudentDataBase
//查找所有数据
+(NSArray *)findAll{
sqlite3 * db = [DB DBOpen]; //调用DB open方法 获取数据库指针
sqlite3_stmt * stmt;//镜像 copy出来的镜像 不影响sqlite里的内容
int result = sqlite3_prepare_v2(db, "select * from student", -1, stmt, Nil);
//-1是不限制字符串的长度 stmt是往stmt里面赋值 Const char **pzTail是设置前面哪个是不用的
NSMutableArray * peopels = [NSMutableArray array]; //制作容器 要装数据
//判断结果 0进判断 result==0表示正确
if (SQLITE_OK == result) {
//判断是否有下一行
while (sqlite3_step(stmt) == SQLITE_ROW) {
//int iCol 是第几个
int stuId = sqlite3_column_int(stmt, 0); //取一行中的一个 int是值的类型
const unsigned charchar * stuName = sqlite3_column_text(stmt, 1); //取一行中的一个 text是值的类型
const unsigned charchar * stuSex = sqlite3_column_text(stmt, 2); //取一行中的一个 text是值的类型
float stuScore = sqlite3_column_double(stmt, 3); //取一行中的一个 double是值的类型
//转换
NSString * currentName = [NSString stringWithUTF8String:(const charchar *)stuName];
NSString * currentSex = [NSString stringWithUTF8String:(const charchar *)stuSex];
StudentModel * student = [StudentModel studentModelWithId:stuId name:currentName sex:currentSex score:stuScore];
//将model中内容 添加到 之前的容器 数组
[peopels addObject:student];
}
sqlite3_finalize(stmt);//关闭镜像
return peopels;//将这个装有数据的数组 返回
}else{
sqlite3_finalize(stmt);
return [NSArray array]; //如果没进入if 返回一个空数组
}
}
//查找单个数据
+(StudentModel *)findPeopleWith:(NSInteger )stuId{
sqlite3 * db = [DB DBOpen];
sqlite3_stmt * stmt;
int result = sqlite3_prepare_v2(db, "select stuName,stuId,stuSex,stuScore from student where stuId=?", -1, stmt, Nil);
sqlite3_bind_int(stmt, 1, stuId);// 第一个int是第几个问好? 第二个int 是绑定的内容 绑定问好
if (SQLITE_OK == result) {
if (sqlite3_step(stmt) == SQLITE_ROW) {
const unsigned charchar * stuName = sqlite3_column_text(stmt, 0);
int stuId = sqlite3_column_int(stmt, 1);
const unsigned charchar * stuSex = sqlite3_column_text(stmt, 2);
float stuScore = sqlite3_column_double(stmt, 3);
NSString * currentName = [NSString stringWithUTF8String:(const charchar *)stuName];
NSString * currentSex = [NSString stringWithUTF8String:(const charchar *)stuSex];
StudentModel * student = [StudentModel studentModelWithId:stuId name:currentName sex:currentSex score:stuScore];
sqlite3_finalize(stmt);
NSLog(@"000");
return student;
}else{
NSLog(@"11111");
return nil;
}
}else{
NSLog(@"222222");
sqlite3_finalize(stmt);
return nil;
}
}
//插入数据
+(void)insertIntoModel:(StudentModel *)model{
sqlite3 * db = [DB DBOpen];
sqlite3_stmt * stmt;
int result = sqlite3_prepare_v2(db, "insert into student values(?,?,?,?)", -1, stmt, Nil);
sqlite3_bind_int(stmt, 1, model.stuId);
sqlite3_bind_text(stmt, 2, [model.stuName UTF8String], -1, Nil);
sqlite3_bind_text(stmt, 3, [model.stuSex UTF8String], -1, nil);
sqlite3_bind_double(stmt, 4, model.stuScore);
if (SQLITE_OK == result) {
if (sqlite3_step(stmt) == SQLITE_DONE) {
NSLog(@"添加成功");
sqlite3_finalize(stmt);
return;
}else{
NSLog(@"添加失败");
sqlite3_finalize(stmt);
return;
}
}else{
NSLog(@"111");
sqlite3_finalize(stmt);
return;
}
}
//更新数据
+(void)updateStuName:(NSString *)name stuSex:(NSString *)sex stuScore:(CGFloat)score stuId:(NSInteger)stuid{
sqlite3 * db = [DB DBOpen];
sqlite3_stmt * stmt;
int result = sqlite3_prepare_v2(db, "update student set stuName=?,stuSex=?,stuScore=? where stuId = ?", -1, stmt, Nil);
sqlite3_bind_int(stmt, 4, stuid);
sqlite3_bind_text(stmt, 1, [name UTF8String], -1, Nil);
sqlite3_bind_text(stmt, 2, [sex UTF8String], -1, nil);
sqlite3_bind_double(stmt, 3, score);
if (SQLITE_OK == result) {
if (sqlite3_step(stmt) == SQLITE_DONE) {
NSLog(@"更新成功");
sqlite3_finalize(stmt);
return;
}else{
NSLog(@"更新失败");
sqlite3_finalize(stmt);
}
}else{
NSLog(@"shibai");
sqlite3_finalize(stmt);
}
}
//删除数据
+(void)deleteModelStuId:(NSInteger)stuid{
sqlite3 * db = [DB DBOpen];
sqlite3_stmt * stmt;
int relust = sqlite3_prepare_v2(db, "delete from student where stuid= ?", -1, stmt, nil);
sqlite3_bind_int(stmt, 1, stuid);
if (SQLITE_OK == relust) {
//step 截段
if (sqlite3_step(stmt) == SQLITE_DONE) {
NSLog(@"删除成功");
sqlite3_finalize(stmt);
return;
}else{
NSLog(@"删除失败");
sqlite3_finalize(stmt);
return;
}
}else{
NSLog(@"删除失败11");
sqlite3_finalize(stmt);
return;
}
}
@end
/span
谁能给我发一段完整的数据库连接池代码?
数据库连接是最常用的提高性能的方法,总结了一下:1 定义数据库访问接口public interface IDatabaseConnection
{
public abstract Connection createConnection();
public abstract void closeConnection(Connection conn);
}2 实现该接口2.1 直接连接,连接速度较慢,用户量较大时资源占用很大public Connection createConnection()
{
try
{
SystemParameter SP = new SystemParameter();
Class.forName(DBDRIVER).newInstance();
Connection con =
DriverManager.getConnection(
DBDRIVER_URL,
DBUSER,
DBPASSWORD);
return con;
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
return null;
}
catch (SQLException e)
{ e.printStackTrace();
return null;
}
catch (InstantiationException e)
{ e.printStackTrace();
return null;
}
catch (IllegalAccessException e)
{ e.printStackTrace();
return null;
}
}
public void closeConnection(Connection conn)
{
if(conn!=null) try
{
conn.close();
}
catch (SQLException e)
{
e.printStackTrace();
} }2.2 DBConnectionManager、DBConnectionPool方式这个连接池是网上比较多的连接池代码public class DBConnectionManager
{
static private DBConnectionManager instance; /*唯一实例*/
static private int clients;
/*该计数代表引用DBConnectionManager唯一实例的客户程序总数,
它将被用于控制连接池的关闭操作 */
//Added by leo on 2001-5-23
static private String DEFAULTCONNECTIONPOOL = "homepage"; private Vector drivers = new Vector();
private PrintWriter logPrint;
private Hashtable pools = new Hashtable();
private SystemParameter sp = new SystemParameter();
/**
返回唯一实例。如果是第一次调用此方法,则创建实例
*/
static synchronized public DBConnectionManager getInstance()
{
if (instance == null)
{
instance = new DBConnectionManager();
}
clients++;
return instance;
} /**
建构函数私有以防止其它对象创建本类实例
*/
public DBConnectionManager()
{
init();
} /** Added by leo on 2001-5-23
使用默认的连接池名,创建并返回新连接
*
* @return Connection 可用连接或null
*/
public Connection getConnection()
{
return getConnection(DEFAULTCONNECTIONPOOL);
} /**
获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数
限制,则创建并返回新连接
*
* @param name 在属性文件中定义的连接池名字
* @return Connection 可用连接或null
*/
public Connection getConnection(String name)
{
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null)
{
return pool.getConnection();
}
return null;
} /**
获得一个可用连接.若没有可用连接,且已有连接数小于最大连接数限制,
则创建并返回新连接.否则,在指定的时间内等待其它线程释放连接.
*
* @param name 连接池名字
* @param time 以毫秒计的等待时间
* @return Connection 可用连接或null
*/
public Connection getConnection(String name, long time)
{
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null)
{
return pool.getConnection(time);
}
return null;
} /** Added by leo on 2001-5-23
将连接对象返回给默认的连接池
*
* @param con 连接对象
*/
public void freeConnection(Connection con)
{
String name = DEFAULTCONNECTIONPOOL;
freeConnection(name, con);
} /**
将连接对象返回给由名字指定的连接池
*
* @param name 在属性文件中定义的连接池名字
* @param con 连接对象
*/
public void freeConnection(String name, Connection con)
{
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null)
{
pool.freeConnection(con);
}
} /**
关闭所有连接,撤销驱动程序的注册
*/
public synchronized void release()
{ // 等待直到最后一个客户程序调用
if (--clients != 0)
{
return;
}
Enumeration allPools = pools.elements();
while (allPools.hasMoreElements())
{
DBConnectionPool pool = (DBConnectionPool) allPools.nextElement();
pool.release();
}
Enumeration allDrivers = drivers.elements();
while (allDrivers.hasMoreElements())
{
Driver driver = (Driver) allDrivers.nextElement();
try
{
DriverManager.deregisterDriver(driver);
log("撤消JDBC驱动程序" + driver.getClass().getName() + "的注册");
}
catch (SQLException e)
{
log(e, "无法撤消下列JDBC驱动程序的注册" + driver.getClass().getName());
}
}
} /**
根据指定属性创建连接池实例.
*
* @param props 连接池属性
*/
private void createPools()
{
String poolName = sp.DBPOOLNAME;
String url = sp.DBDRIVER_URL;
String user = sp.DBUSER;
String password = sp.DBPASSWORD;
int max = sp.DBMAXCONN;
DBConnectionPool pool =
new DBConnectionPool(poolName, url, user, password, max);
pools.put(poolName, pool);
log("成功创建连接池" + poolName); } /**
读取属性完成初始化
*/
private void init()
{ logPrint=new PrintWriter(System.out);
loadDrivers();
createPools();
} /**
装载和注册所有JDBC驱动程序
*
* @param props 属性
*/
private void loadDrivers()
{
String driverClassName = sp.DBDRIVER;
try
{
Driver driver =
(Driver) Class.forName(driverClassName).newInstance();
DriverManager.registerDriver(driver);
drivers.addElement(driver);
log("成功JDBC注册驱动程序" + driverClassName);
}
catch (Exception e)
{
log("无法注册JDBC驱动程序;" + driverClassName + ",错误:" + e);
}
} /**
将文本信息写入日志文件
缺省为packaged
*/
void log(String msg)
{
logPrint.println(new java.util.Date() + ": " + msg);
} /**
将文本信息与异常写入日志文件
*/
void log(Throwable e, String msg)
{
logPrint.println(new java.util.Date() + ": " + msg);
e.printStackTrace(logPrint);
}}------------------------------------------------------class DBConnectionPool
{
private int checkedOut;
private PrintWriter logPrint;
private Vector freeConnections = new Vector();
private int maxConn;
private String name;
private String password;
private String URL;
private String user; /**
创建新的连接池
*@param name 连接池名字
*@param URL 数据库的JDBC URL
*@param user 数据库帐号,或null
*@param password 密码,或null
*@param maxConn 此连接池允许建立的最大连接数
*/
public DBConnectionPool(String name, String URL, String user, String password, int maxConn)
{
this.name = name;
this.URL = URL;
this.user = user;
this.password = password;
this.maxConn = maxConn;
logPrint = new PrintWriter(System.out);
} /**
将不再使用的连接返回给连接池
*@param con 客户程序释放的连接
*/
public synchronized void freeConnection(Connection con)
{
freeConnections.addElement(con);
checkedOut--;
notifyAll();
} /**
从连接池获得一个可用连接,如没有空闲的连接且当前连接数小于最大连接数,则创建新连接,
如原来登记为可用的连接不再有效,则从向量删除之,然后递归调用自己以尝试新的可用连接
*/
public synchronized Connection getConnection()
{
Connection con = null;
if(freeConnections.size() 0)
{// 获取向量中第一个可用连接
con = (Connection)freeConnections.firstElement();
freeConnections.removeElementAt(0);
try
{
if(con.isClosed())
{
log("从连接池" + name + "删除一个无效连接");
con = getConnection();
}
}
catch(SQLException e)
{
log("从连接池" + name + "删除一个无效连接");
con = getConnection();
}
}
else if(maxConn == 0 || checkedOut maxConn)
{
con = newConnection();
}
if(con != null)
{
checkedOut++;
}
return con;
} /**
从连接池获取可用连接,可以指定客户程序能够等待的最长时间
*@param timeout 以毫秒计的等待时间限制
*/
public synchronized Connection getConnection(long timeout)
{
long startTime = new Date().getTime();
Connection con;
while((con = getConnection()) == null)
{
try
{
wait(timeout);
}
catch(InterruptedException e){}
if((new Date().getTime() - startTime) = timeout)
{
return null;
}
}
return con;
} /**
关闭所有连接
*/
public synchronized void release()
{
Enumeration allConnections = freeConnections.elements();
while(allConnections.hasMoreElements())
{
Connection con = (Connection)allConnections.nextElement();
try
{
con.close();
log("关闭连接池" + name + "中的一个连接");
}
catch(SQLException e)
{
log(e, "无法关闭连接池" + name + "中的连接");
}
}
freeConnections.removeAllElements();
} /**
创建新的连接
*/
private Connection newConnection()
{
Connection con = null;
try
{
if(user == null)
{
con = DriverManager.getConnection(URL);
}
else
{
con = DriverManager.getConnection(URL, user, password);
}
log("连接池" + name + "创建一个新的连接");
}
catch(SQLException e)
{
log(e, "无法创建下列URL的连接" + URL);
return null;
}
return con;
} /**
将文本信息写入日志文件
缺省为packaged
*/
void log(String msg)
{
logPrint.println(new Date() + ": " + msg);
} /**
将文本信息与异常写入日志文件
*/
void log(Throwable e, String msg)
{
logPrint.println(new Date() + ": " + msg);
e.printStackTrace(logPrint);
}
}
---------------------------------DBConnectionManager connMgr = DBConnectionManager.getInstance();
public Connection createConnection()
{ Connection dBConn = connMgr.getConnection(new SystemParameter().DBPOOLNAME);
return dBConn;
} public void closeConnection(Connection conn)
{
connMgr.freeConnection(new SystemParameter().DBPOOLNAME, conn);
connMgr.release(); }
经过测试,使用这种方法,会造成数据库大量死锁,证明该连接池实现方法存在隐患也可能是因为它不属于webserver容器自身的,不具有可管理性。2.3 tomcat连接池public Connection createConnection()
{ try
{
Context initCtx = new InitialContext();
DataSource ds;
ds = (DataSource) initCtx.lookup("java:comp/env/"+new SystemParameter().JDBC_SOURCE);
return ds.getConnection();
}
catch (NamingException e)
{ e.printStackTrace();
return null;
}
catch (SQLException e)
{ e.printStackTrace();
return null;
} } public void closeConnection(Connection conn)
{
if(conn!=null)try
{
conn.close();
conn=null;
}
catch (SQLException e)
{
e.printStackTrace();
}
}2.4 weblogic连接池public Connection createConnection()
{
Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FACTORY);
ht.put(Context.PROVIDER_URL, URL);
// ht.put(Context.SECURITY_PRINCIPAL, "admin");
// ht.put(Context.SECURITY_CREDENTIALS, "11111111"); Connection conn = null; try
{
ctx = new InitialContext(ht);
DataSource ds = (DataSource) ctx.lookup(POOL_NAME);
return ds.getConnection();
}
catch (NamingException e)
{ e.printStackTrace();
}
catch (SQLException e)
{ e.printStackTrace();
}
return null; } public void closeConnection(Connection conn)
{
if (conn != null)
try
{
conn.close();
conn = null;
}
catch (SQLException e)
{ e.printStackTrace();
} }3,4的方法比较好
完整数据库代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于完整数据库代码是什么、完整数据库代码的信息别忘了在本站进行查找喔。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
- 上一篇:销售外包平台,销售 外包
- 下一篇:seo技术推广,seo推广有效果吗
相关推荐
- 05-06程序员像妹子表白专用代码(程序员的表白代码)[20240506更新]
- 05-06网页ip显示代码(网页的ip)[20240506更新]
- 05-06dz论坛自动回帖代码(discuz自动发帖)[20240506更新]
- 05-06短信攻击代码(短信攻击网站)[20240506更新]
- 05-06c代码库网站(c语言开源代码网站)[20240506更新]
- 05-06源代码高亮输出html(高亮显示代码)[20240506更新]
- 05-06合作伙伴网页代码(合作伙伴网页代码是多少)[20240506更新]
- 05-06gif怎么转代码(如何转为gif)[20240506更新]
- 05-06java图书馆管理系统代码(图书馆管理系统开源代码java)[20240506更新]
- 05-06canny边缘检测matlab代码(基于matlab的边缘检测)[20240506更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接