ホームページ データベース mysql チュートリアル 支持MySQL数据库,SPL升级到3.2

支持MySQL数据库,SPL升级到3.2

Jun 07, 2016 pm 04:14 PM
mysql spl 主要 アップグレード サポート データベース 記事

此文章主要讲述的是SPL升级到3.2全面支持MySQL数据库的实际应用与具体操作,如果你是MySQL数据库方面的新手,对MySQL数据库的相关实际应用不是很了解的话,以下的文章会给你提供更全面的知识。 SPL从上次的3.1.0.5开始,经过了一段时间,积累了一些修改并进

此文章主要讲述的是SPL升级到3.2全面支持MySQL数据库的实际应用与具体操作,如果你是MySQL数据库方面的新手,对MySQL数据库的相关实际应用不是很了解的话,以下的文章会给你提供更全面的知识。

SPL从上次的3.1.0.5开始,经过了一段时间,积累了一些修改并进行了MySQL数据库的支持,现在发布SPL版本为3.2.0.4,Dll下载地址:这里 。只需要在项目中,把原来的Dll覆盖即可,如果还没下载过SPL早期版本的朋友,本次SPL自上次发布的3.1.0.5以后进行的更新有:

1、支持MS SQL SERVER中的Bit型数据类型

映射到ClassMap中的类型为boolean,如:

<ol class="dp-xml"><li class="alt"><span><span class="tag"><span class="tag-name">attribute</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"IsOver"</span><span> </span><span class="attribute">column</span><span>=</span><span class="attribute-value">"IsOver"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"boolean"</span><span> </span><span class="tag">/></span><span> </span></span></span></li></ol>
ログイン後にコピー

对应的实体类类型为bool型,如:

<ol class="dp-xml">
<li class="alt"><span><span>private bool m_IsOver;   </span></span></li>
<li><span>public bool IsOver  </span></li>
<li class="alt"><span>{  </span></li>
<li><span>get  </span></li>
<li class="alt"><span>{  </span></li>
<li><span>return this.m_IsOver;  </span></li>
<li class="alt"><span>}  </span></li>
<li><span>set  </span></li>
<li class="alt"><span>{  </span></li>
<li>
<span class="attribute">this.m_IsOver</span><span> = </span><span class="attribute-value">value</span><span>;  </span>
</li>
<li class="alt"><span>}  </span></li>
<li><span>} </span></li>
</ol>
ログイン後にコピー

在查询时可以通过Condition进行比较判断了:

<ol class="dp-xml">
<li class="alt"><span><span>Codition </span><span class="attribute">c</span><span>=....  </span></span></li>
<li><span>c.AddEqualTo("IsOver",false); </span></li>
</ol>
ログイン後にコピー

这会最终生成 IsOver='0'的查询条件

2、提供了对数据源的提供者类型的判断,这将方便区分不同的MySQL数据库提供者手动组装不同的SQL语句

用Setting.Instance().GetDatabaseVendor(dbName)根据dbName数据源取得数据源提供者,然后与DatabaseVendor枚举型比较

如Access的日期比较与Sql Server的不一致:一个采用#号,一个采用'号

<ol class="dp-xml">
<li class="alt"><span><span>if(Setting.Instance().GetDatabaseVendor(dbName)==DatabaseVendor.MsAccess)  </span></span></li>
<li><span>{  </span></li>
<li class="alt">
<span>builder.Append(" and SpecialPriceD2.FromDate</span><span class="tag"><span>=#"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"#");  </span></span>
</li>
<li>
<span>builder.Append(" and SpecialPriceD2.ToDate</span><span class="tag">></span><span>=#"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"#");  </span>
</li>
<li class="alt"><span>}  </span></li>
<li><span>if(Setting.Instance().GetDatabaseVendor(dbName)==DatabaseVendor.MsSqlServer)  </span></li>
<li class="alt"><span>{  </span></li>
<li>
<span>builder.Append(" and SpecialPriceD2.FromDate</span><span class="tag"><span>='"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"'");  </span></span>
</li>
<li class="alt">
<span>builder.Append(" and SpecialPriceD2.ToDate</span><span class="tag">></span><span>='"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"'");  </span>
</li>
<li><span>} </span></li>
</ol>
ログイン後にコピー

这个功能将为系统对多种MySQL数据库的支持最佳的灵活性,虽然SPL本身的“实体”与“标准”都可以区分不同的数据源提供者,但在需要手写SQL的地方,也需要根据不同的数据源提供者提供不同的语句执行

3、修订了对所有保留字的兼容性

目前对所有的SPL中的操作,都加了定界符,ORACLE采用“"”号,MS的采用“[]”号,MySql的采用“`”号,所有测试都通过了

4、在Condition里添加了对Null值的查询功能

此方式只针对AddEqualTo()和AddNotEqualTo()有效:

<ol class="dp-xml">
<li class="alt"><span><span>c.AddEqualTo("字段名",System.DBNull.Value);  </span></span></li>
<li><span>c.AddNotEqualTo("字段名",System.DBNull.Value);  </span></li>
</ol>
ログイン後にコピー

5、增加了对MySql数据库的支持

SPL对MySql的访问连接采用的是MySql提供的专用.NET connector,此驱动应该说是目前.NET连接MySql的最佳选择,在使用SPL访问MySql时,只需要安装一下此驱动即可,下载与介绍请看

使用时只需要配置DatabaseMap时类型设为“MySql”即可,如下:

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><span class="tag-name">database</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"MySqlDB"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"MySql"</span><span class="tag">></span><span>   </span></span></span></li>
<li><span class="tag"><span class="tag-name">parameter</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"User Id"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"root"</span><span class="tag">/></span><span> </span></span></li>
<li class="alt"><span class="tag"><span class="tag-name">parameter</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"Data Source"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"localhost"</span><span class="tag">/></span><span> </span></span></li>
<li><span class="tag"><span class="tag-name">parameter</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"Database"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"mysql"</span><span class="tag">/></span><span> </span></span></li>
<li class="alt"><span class="tag"><span class="tag-name">parameter</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"password"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">""</span><span class="tag">/></span><span> </span></span></li>
<li><span class="tag"><span class="tag-name">classMapFile</span><span> </span><span class="attribute">path</span><span>=</span><span class="attribute-value">"ClassMap.xml"</span><span> </span><span class="tag">/></span><span> </span></span></li>
<li class="alt">
<span class="tag"></span><span class="tag-name">database</span><span class="tag">></span><span> </span>
</li>
</ol>
ログイン後にコピー

只需这里配置后,SPL在具体应用中与其他的完全一样,测试情况:

实体测试--->通过

RetrieveCriteira、UpdateCriteria、DeleteCriteria测试--->通过

Transaction测试--->通过

自动增长主键测试--->通过

TOP功能测试--->通过

6、对DateTime的Null值进行了处理 (3.2.0.1开始支持)

如果要对DateTime类型的字段赋于Null值,只需要使用DateTime.MinValue即可:

aEntity.CreateDate=DateTime.MinValue;

在SPL内部会判断如果DateTime.MinValue的话,自动保存到MySQL数据库为System.DBNull.Value,这就解决了不能给 DateTime类型直接赋于System.DBNull.Value的问题。

7、修订了UpdateCriteria对属性名与字段名不一致时导致的错误(3.2.0.2开始修订)

原来在UpdateCriteira时没有对属性进行转化为字段名,导致在属性名与字段名不一致的情况下会找不到字段。

(非常感谢iamsunrise提供的建议,请下载了SPL3.2的朋友重新下载一下)
(感谢子扬报出的BUG)

8、本3.2.0.4已经修复了DataBaseType的MySql类型了。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

Apacheのデータベースに接続する方法 Apacheのデータベースに接続する方法 Apr 13, 2025 pm 01:03 PM

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

Centosはmysqlをインストールします Centosはmysqlをインストールします Apr 14, 2025 pm 08:09 PM

CentOSにMySQLをインストールするには、次の手順が含まれます。適切なMySQL Yumソースの追加。 yumを実行して、mysql-serverコマンドをインストールして、mysqlサーバーをインストールします。ルートユーザーパスワードの設定など、MySQL_SECURE_INSTALLATIONコマンドを使用して、セキュリティ設定を作成します。必要に応じてMySQL構成ファイルをカスタマイズします。 MySQLパラメーターを調整し、パフォーマンスのためにデータベースを最適化します。

DockerによるMySQLを開始する方法 DockerによるMySQLを開始する方法 Apr 15, 2025 pm 12:09 PM

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

phpmyAdminの包括的な使用ガイド phpmyAdminの包括的な使用ガイド Apr 10, 2025 pm 10:42 PM

PHPMyAdminは単なるデータベース管理ツールではなく、MySQLを深く理解し、プログラミングスキルを向上させることができます。コア関数には、CRUDおよびSQLクエリの実行が含まれ、SQLステートメントの原則を理解することが重要です。高度なヒントには、データのエクスポート/インポートと許可管理が含まれ、深いセキュリティの理解が必要です。潜在的な問題にはSQLインジェクションが含まれ、ソリューションはパラメーター化されたクエリとバックアップです。パフォーマンスの最適化には、SQLステートメントの最適化とインデックスの使用が含まれます。ベストプラクティスは、コード仕様、セキュリティプラクティス、および定期的なバックアップを強調しています。

See all articles