MYSQL数据库能否承受循环查询

MYSQL数据库能否承受循环查询,第1张

MYSQL确实不够稳定不够快,我做的系统刚换成SQLserver了!!至于你说的那个循环 *** 作当然是没什么问题了,前提是你的数据是不是海量数据(就是记录很多),如果不是那就安心使用啦!!!只要你写的代码没有逻辑错误呵呵,另外我说的数据过多会不稳定是指数据库所有表整个记录在50万条以上,单表最多记录5万条,游标嵌套超过3层的情况,这个谁也没规定,这是我几个项目总结出来的实战经验而已,仅供参考!!!

import javasqlConnection;

import javasqlDriverManager;

import javasqlPreparedStatement;

import javasqlResultSet;

import javasqlSQLException;

//stmtexecuteUpdate("create table People(name varchar(255),A int,B int)");

//stmtexecuteUpdate("insert into People values('张三',1,0)");

//stmtexecuteUpdate("insert into People values('李四',2,1)");

//stmtexecuteUpdate("insert into People values('王五',3,1)");

//stmtexecuteUpdate("insert into People values('赵云',4,2)");

//stmtexecuteUpdate("insert into People values('张飞',5,3)");

public class Test {

private static void query(Connection conn,String sql,int a) {

PreparedStatement stmt = null;

ResultSet rs = null;

try {

stmt = connprepareStatement(sql);

stmtsetInt(1, a);

rs = stmtexecuteQuery();

while (rsnext()) {

Systemoutprintln(rsgetString("name")+":"+rsgetInt("A"));

query(conn,sql,rsgetInt("A"));

}

} catch (SQLException e) {

eprintStackTrace();

} finally {

if (rs != null) {

try {

rsclose();

rs=null;

Systemoutprintln(a+":rs closed");

} catch (SQLException e) {

eprintStackTrace();

}

}

if (stmt != null) {

try {

stmtclose();

stmt=null;

Systemoutprintln(a+":stmt closed");

} catch (SQLException e) {

eprintStackTrace();

}

}

}

Systemoutprintln("===============================");

}

public static void main(String[] args) {

Connection conn = null;

try {

conn = DriverManagergetConnection("jdbc:derby:E:/Derby/test");

String sql="select from people where B=";

query(conn,sql, 1);

} catch (SQLException e) {

eprintStackTrace();

} finally {

if (conn != null) {

try {

connclose();

Systemoutprintln("Connection关闭。");

} catch (SQLException e) {

eprintStackTrace();

}

}

}

}

}

真的不明白,为什么两条sql语句,都是同时查一个表??

public interface Statementextends Wrapper

用于执行静态 SQL 语句并返回它所生成结果的对象

在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。因此,如果读取一个 ResultSet 对象与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成的。如果存在某个语句的打开的当前 ResultSet 对象,则 Statement 接口中的所有执行方法都会隐式关闭它。

这当然是不行的了,上面的告诉你的也是错误的,因为原因在于你循环的时候进行了数据库的查询,所以每次都是新的数据,指针当然要从第一条开始了。

所以不是你的循环的错误,而是你数据库查询代码位置的错误

要这样写

$num=mysql_query("select

from

china_city

where

parentid=0");

$n=

mysql_num_rows

($num);

for($i=1;$i<=$n;$i++){

${"row"$i}=mysql_fetch_array($num);

echo

$i"

"${"row"$i}['city']"

";

}

一般都是用foreach或while写的

foreach(mysql_fetch_array($num)

as

$key=>$value){}

while($row

=mysql_fetch_array($num)){}

MSSQL 数据库下实现:

CREATE TABLE #TEMP (单号 INT, 价格 FLOAT)

INSERT INTO #TEMP VALUES(2,50)

INSERT INTO #TEMP VALUES(1,50)

INSERT INTO #TEMP VALUES(3,60)

INSERT INTO #TEMP VALUES(4,60)

INSERT INTO #TEMP VALUES(7,60)

INSERT INTO #TEMP VALUES(8,60)

DECLARE   @REFID        INT

        , @ORDERID        VARCHAR(30)

        , @JIAGE VARCHAR(100)

SELECT  REFID = IDENTITY(INT , 1, 1), DealFlg = 0, 单号,价格

INTO #Temp_Lists

FROM #TEMP

SELECT @REFID = MIN(REFID) FROM #Temp_Lists WHERE DealFlg = 0

CREATE TABLE #TEMP1 (单号 VARCHAR(100), 价格 FLOAT)

DECLARE @TEMPDANHAO VARCHAR

WHILE @REFID IS NOT NULL

BEGIN

   SELECT @ORDERID = 单号,@JIAGE = 价格 FROM  #Temp_Lists WHERE REFID = @REFID

   IF EXISTS(SELECT 价格 FROM #TEMP1 WHERE 价格 = @JIAGE)

   BEGIN

    SELECT @TEMPDANHAO = 单号 FROM #TEMP  WHERE 单号 = @ORDERID

    PRINT @ORDERID

    UPDATE #TEMP1 SET 单号 = convert(varchar(10),单号)+ ',' + @TEMPDANHAO WHERE 价格 = @JIAGE

   END

   ELSE

   BEGIN

     INSERT INTO #TEMP1 SELECT  FROM #TEMP  WHERE 单号 = @ORDERID

   END

    

    UPDATE #Temp_Lists SET DealFlg = 1 WHERE REFID = @REFID

    SELECT @REFID = MIN(REFID) FROM #Temp_Lists WHERE DealFlg = 0 AND REFID > @REFID

END

SELECT  FROM #TEMP1

DROP TABLE #TEMP1

DROP TABLE #Temp_Lists

DROP TABLE #TEMP

以上就是关于MYSQL数据库能否承受循环查询全部的内容,包括:MYSQL数据库能否承受循环查询、java如何循环查数据库同一张表、数据库两表两循环查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9403426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存