php连接mysql数据库原理是怎样的

php连接mysql数据库原理是怎样的,第1张

现在使用PDO链接数据库的较多

连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。构造函数接收用于指定数据库源(所谓的 DSN)以及可能还包括用户名和密码(如果有的话)的参数。

连接到 MySQL

<?php

$dbh = new PDO('mysql:host=localhostdbname=test', $user, $pass)

?>

如果有任何连接错误,将抛出一个 PDOException 异常对象。如果想处理错误状态,可以捕获异常,或者选择留给通过 set_exception_handler() 设置的应用程序全局异常处理程序。

处理连接错误

<?php

try {

    $dbh = new PDO('mysql:host=localhostdbname=test', $user, $pass)

    foreach($dbh->query('SELECT * from FOO') as $row) {

        print_r($row)

    }

    $dbh = null

} catch (PDOException $e) {

    print "Error!: " . $e->getMessage() . "<br/>"

    die()

}

?>

如果应用程序不在 PDO 构造函数中捕获异常,zend 引擎采取的默认动作是结束脚本并显示一个回溯跟踪,此回溯跟踪可能泄漏完整的数据库连接细节,包括用户名和密码。因此有责任去显式(通过 catch 语句)或隐式(通过 set_exception_handler() )地捕获异常。

连接数据成功后,返回一个 PDO 类的实例给脚本,此连接在 PDO 对象的生存周期中保持活动。要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 NULL 值给对象变量。如果不明确地这么做,PHP 在脚本结束时会自动关闭连接。

关闭一个连接

<?php

$dbh = new PDO('mysql:host=localhostdbname=test', $user, $pass)

// 在此使用连接

// 现在运行完成,在此关闭连接

$dbh = null

?>

很多 web 应用程序通过使用到数据库服务的持久连接获得好处。持久连接在脚本结束后不会被关闭,且被缓存,当另一个使用相同凭证的脚本连接请求时被重用。持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快。

前面一种写法MySQLConnectionString是个构造函数,AsString最后得出什么string你可以打印出来看看与后面一种有什么区别,后面一种貌似是针对sqlserver的,mysql应该有些差别

表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。无法继承此类。

命名空间: System.Data.SqlClient

程序集: System.Data(在 System.Data.dll 中)

C#:

public sealed class SqlCommand : DbCommand, ICloneable

当创建 SqlCommand 的实例时,读/写属性将被设置为它们的初始值。

您可以重置 CommandText 属性并重复使用 SqlCommand 对象。但是,在执行新的命令或先前命令之前,必须关闭 SqlDataReader。如果执行 SqlCommand 的方法生成 SqlException,那么当严重级别小于等于 19 时,SqlConnection 将仍保持打开状态。当严重级别大于等于 20 时,服务器通常会关闭 SqlConnection。但是,用户可以重新打开连接并继续。

编辑本段Sqlcommand实例

1

private static void ReadOrderData(string connectionString)

{

string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders"

using (SqlConnection connection = new SqlConnection( connectionString))

{

SqlCommand command = new SqlCommand( queryString, connection)connection.Open()

SqlDataReader reader = command.ExecuteReader()

try

{

while (reader.Read())

{

Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]))

}

}

finally

{

// Always call Close when done reading. reader.Close()

}

}

}

2

string str = "server='(local)'database='mytable'uid='sa'pwd='sa'"

SqlConnection con = new SqlConnection(str)//创建连接对象

con.Open()//打开连接

其中,str是数据连接字串,用来初始化Connection对象,说明如何连接数据库,当数据库连接完毕后,可以使用Open方法打开数据连接。完成数据库连接后,需创建一个新的Command对象,示例代码如下所示。

SqlCommand cmd = new SqlCommand("insert into mynews value ('插入一条新数据')", con)

Command对象的构造函数的参数有两个,一个是需要执行的SQL语句,另一个是数据库连接对象。创建Command对象后,就可以执行SQL命令,执行后完成并关闭数据连接,示例代码如下所示。

cmd.ExecuteNonQuery()//执行SQL命令

con.Close()//关闭连接

3 SqlCommand对象有三个方法;

1.ExecuteNonQuery()它的返回值类型为int型。多用于执行增加,删除,修改数据。返回受影响的行数。

2.ExecuteReader()它的返回类型为SqlDataReader。此方法用于用户进行的查询 *** 作。使用SqlDataReader对象的Read()方法进行逐行读取。

例如:

SqlCommand comm =new SqlCommand("select * from CGSZ where cid="+id,conn)

SqlDataReader reder=comm.ExecuteReader()

while(reder.Read())

{

//读出内容列

string str=reder["cname"].ToString()

//读取分类列

string str1=reder["ckind"].ToString()

//分别为文本框加载数据

this.txtContent.Text = str

this.txtClass.Text = str1

}

其中的读取数据列的时候。除了使用reder["列名"].ToString()还可以使用reder[索引].ToSting()<注意:这里的索引指的是数据库中列的索引。从0开始。>

3.3.ExecuteScaler()它的返回值类型多位int类型。它返回的多为执行select查询。得到的返回结果为一个值的情况,比如使用count函数求表中记录个数或者使用sum函数求和等。


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

原文地址:https://54852.com/zaji/8636335.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存