为什么每一次往数据库加入数据时,都会加入插入两行一样的信息

为什么每一次往数据库加入数据时,都会加入插入两行一样的信息,第1张

这是url传递参数的代码:

XML/HTML code

<td align="left"><a href="choosephprelation_id='$row['user_id']'&user_id='$_COOKIE['user_id']'">一键关注</a></td>

这是插入数据库的代码:

PHP code

<php

header("Content-Type:text/html; charset=utf-8");

include('MY_PHP_file/mysql_connectphp');

$user_id = $_GET['user_id'];

$relation_id = $_GET['relation_id'];

$sql = "INSERT INTO user_action (user_id, relation_id, concern_time) VALUES ('$user_id', '$relation_id', now())";

$state = mysql_query($sql);

if($state)

{

echo "<script>alert('一键关注成功!!'); locationhref='user_actionphp';</script>";

}

else

echo '<script>alert("一键关注失败,请重试!!"); locationhref="user_actionphp";</script>';

>

$state = mysql_query($sql);

if($state)

按我的理解这里执行了两次。

解决方法直接是 if(mysql_query($sql))就可以了

封装 SqlConnection,定义成Static ,或者用singleton

public class CustomisedConnection

{

public static CustomisedConnection ConnectionInstance = new CustomisedConnection();

SqlConnection _conn;

private CustomisedConnection(){_conn = new SqlConnection();}

}

调用CustomisedConnectionConnectionInstance 就好了

首先,你的这个database成员变量没有加修饰符,是非静态的,protected的,在static的方法中调用是会出语法错误的。

其次,维持数据库连接是不科学的,数据库服务器的承受能力也有限,所以应该是每次访问数据库的时候打开连接,访问结束之后立即释放。

是否需要反复实例化要看这个CommonDataAccessLayerDatabase类是怎么写的,如果这个类在GetDataReader方法里做的ConnectionOpen()和ConnectionClose()(SqlConnection 或者其他),那么只实例化一次是OK的(这样做也是符合常理的)。否则的话就应该每次调用方法都重新实例化。

我看到每个GetDataReader之后都有一个Close()方法,那么我认为应该是第一种情况。

----------------------------------------------------------------------

首先很抱歉,我不用QQ

关于Database类的代码:

我觉得如果你对它的功能要求不是很复杂的话,可以把Open和Close方法去掉(或者改成private的),把打开和关闭连接的 *** 作都整合到访问数据库的方法中,以达到更好的封装效果。当然如果你的程序需要暴露Open和Close 的接口就算了。

----------------------------------------------------------------------

看来你还不是很理解“封装”的概念。封装的意思是隐藏代码,就是说提供尽量简单的接口,使用者只知道这个接口可以做什么事情,但不知道具体的实现途径。例如这里,如果将Open和Close整合到GetDataReader中,我只知道可以获得一个DataReader,但不知道需要先Open,获得DataReader,然后Close这样的过程。目前你的做法是这样的:在GetDataReader中Open,但是需要调用DataBaseClose方法来关闭。我看过你的第一段代码就可以猜出里面大致是如何实现的了,这就说明封装的不完善。

以上就是关于为什么每一次往数据库加入数据时,都会加入插入两行一样的信息全部的内容,包括:为什么每一次往数据库加入数据时,都会加入插入两行一样的信息、C#中我如何在FORM1窗体连接一次数据库 FORM2 FORM3都不用连了 直接能用这个库了、一个类中多次连接数据库,只实例化一次可以吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9753400.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存