当前位置:首页 > 代码 > 正文

完整数据库代码(完整数据库代码是什么)[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站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/434.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载