suchen
HeimDatenbankMySQL-TutorialOracle中Clob类型处理解析

系统环境 xp+2.0+oracle9i

  表结构(由于是测试,表结构随便建了一张) XX

  字段名

  类型

  ID

  VARCHAR2(70)

  TEST

  CLOB

  测试

  方式1:直接将CLOB的值拼写在SQL语句中。

  代码:

  string id = Guid.NewGuid().ToString();

  OracleCommand cmd = Conn.CreateCommand();

  cmd.CommandText = "insert into xx(id,test) values('" + id + "','" + data + "')";// data是一个变量,存储你要插入的字符串

  cmd.ExecuteNonQuery();

  情况分析:

  当data的长度大于4000时报错(ORA-01704:文字字符串过长),小于或等于4000时正常插入。

  原因分析:

  之所以会出现长度大于4000时报错,是因为Oracle中有SQL语句中两个单引号之间的字符数不能大于4000的限制。'" + data + "' data在sql语句之间,当data的值大于4000个字节时就会报错。

  解决办法:

  这种方式比较棘手,但有更好的方式,下边会讲到 。

  方式2:采用参数形式。

  代码:

  string id = Guid.NewGuid().ToString();

  OracleCommand cmd = Conn.CreateCommand();

  cmd.CommandText = "insert into xx(id,test) values('" + id + "',:p1)";

  OracleParameter p1 = new OracleParameter("p1", OracleType.Clob);

  p1.Value = data; // data是一个变量,存储你要插入的字符串

  cmd.Parameters.Add(p1);

  cmd.ExecuteNonQuery();

  情况分析:

  采用这种方式能够正常插入。所以推荐用这种方式。

  原因分析:

  无

  解决办法:

  无

  方式3:采用参数形式,但是参数类型写为OracleType. NVarChar

  代码:

  string id = Guid.NewGuid().ToString();

  OracleCommand cmd = Conn.CreateCommand();

  cmd.CommandText = "insert into xx(id,test) values('" + id + "',:p1)";

  OracleParameter p1 = new OracleParameter("p1", OracleType. NVarChar);

  p1.Value = data; // data是一个变量,存储你要插入的字符串

  cmd.Parameters.Add(p1);

  cmd.ExecuteNonQuery();

  

   情况分析:

  为什么要写这种方式,因为这种方式和采用NHibernate的方式很相似,先看看在这种方式会产生什么情况。当data的字节数在0-2000之间时正常插入,大于4000时也正常插入,但在2000-4000时则失败,报错(ORA-01461:仅可以插入 LONG列的LONG值赋值)

  原因分析:

  没有采用对应的Oracle类型。

  解决办法:

  采用OracleType.Clob

  下边采用NHibernate插入数据,NHibernate具体怎用不在本次讨论范围。

  NHibernate采用的版本为1.2.1.4000。

  下边大至把简要配置写下。

  App.config

  

  

  

  

  

  

  

  

  

  

  

  value="Data Source=Orcl_192.168.0.232;User ID =icqs_test;Password=icqs_test" />

  

  

  key="hibernate.adonet.batch_size"

  value="100"

  />

  

  

  xx.cs

  using System;

  using System.Collections.Generic;

  using System.Text;

  namespace Test.Enties

  {

  [Serializable]

  public class Xx

  {

  public Xx()

  {

  }

  private string id;

  public virtual string Id

  {

  get { return id; }

  set { id = value; }

  }

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Wie lasse ich eine vorhandene Ansicht in MySQL fallen oder ändern?Wie lasse ich eine vorhandene Ansicht in MySQL fallen oder ändern?May 16, 2025 am 12:11 AM

TodropaviewInmysql, verwenden Sie "dropviewifexistsView_name;" und tomodifyAview, verwenden Sie "creetorReplaceViewView_nameasSelect ...". WhendroppingAView, AXIZENDENDEPENTENDENSANDUSUSE "SHOWREATEVIEWVIEW_NAME;" "

MySQL -Ansichten: Welche Designmuster kann ich damit verwenden?MySQL -Ansichten: Welche Designmuster kann ich damit verwenden?May 16, 2025 am 12:10 AM

MySQLViewScaneffectivItilizedEntatternSliKeadapter, Dekorateur, Factory undobserver.1) adapterPatternAdaptsdatafromDifferentTableStoaunifiedView.2) DekoratorpatternHancesDataWithokulediel.3) FactoryPatherncreat.ProduculedFeld.3) FactoryPathertoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoration

Was sind die Vorteile der Verwendung von Ansichten in MySQL?Was sind die Vorteile der Verwendung von Ansichten in MySQL?May 16, 2025 am 12:09 AM

ViewSinMysqLarbenicialforSimplifyTyComplexQueries, Verbesserung der Sicherheit, Sicherstellung von Dataconsistenz und optimizierterformance.1) SimplifyComplexQueriesbyCapscapsThemintorusableViewViews.2) ViewSenhiteCurityByControllingDataAccess.3) TheenedatacocurityBycaprollingDataAccess.3) TheenedatacocurityBycaprollingDataAccess.3) TheenedatacocurityBycaperingDataAccess.3) TheenedatacocurityBycaperingDataAccess.3) TheenedatacocurityByCaperingDataAccess.3) TheenedatacocourityByCaprollingDataAccess.3) Theensedataco

Wie kann ich eine einfache Ansicht in MySQL erstellen?Wie kann ich eine einfache Ansicht in MySQL erstellen?May 16, 2025 am 12:08 AM

ToCreateAsimpleviewInmysql, UsethecreateviewStatement.1) definessetheviewWithCreateView_nameas.2)

MySQL Erstellen Sie Benutzeranweisung: Beispiele und gemeinsame FehlerMySQL Erstellen Sie Benutzeranweisung: Beispiele und gemeinsame FehlerMay 16, 2025 am 12:04 AM

Tocreateusersinmysql, useTheCecreateuserStatement.1) ForAlocalUser: CreateUser'LocalUser '@' localhost'ididentifiedBy'SecurePassword ';

Was sind die Grenzen der Verwendung von Ansichten in MySQL?Was sind die Grenzen der Verwendung von Ansichten in MySQL?May 14, 2025 am 12:10 AM

MySQLViewShavelimitations: 1) Sie sind supportallsqloperationen, restriktedatamanipulation ThroughviewswithjoinSuBqueries.2) Sie können sich angesehen, insbesondere mit der kompetenten Formata -Ansichten, die docrexQuqueriesorlargedatasets angezeigt werden

Sicherung Ihrer MySQL -Datenbank: Hinzufügen von Benutzern und Gewährung von BerechtigungenSicherung Ihrer MySQL -Datenbank: Hinzufügen von Benutzern und Gewährung von BerechtigungenMay 14, 2025 am 12:09 AM

OrteSermanagementinmysqlisicialforenHancingSecurityAnsuringEffizienceDatabaseoperation.1) Usecreateutertoaddusers, spezifizierende Connections mit 'localhost'or@'%'.

Welche Faktoren beeinflussen die Anzahl der Trigger, die ich in MySQL verwenden kann?Welche Faktoren beeinflussen die Anzahl der Trigger, die ich in MySQL verwenden kann?May 14, 2025 am 12:08 AM

Mysqldoes nicht imposeahardlimitontriggers, aber praktische Faktorendeterminetheireffectiveuse: 1) serverconfigurationImpactstriggermanagement;

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.