Heim Datenbank MySQL-Tutorial .net用OLEDB方式操作SqlServer和Sybase

.net用OLEDB方式操作SqlServer和Sybase

Jun 07, 2016 pm 03:26 PM
.net sqlserver 操作 方式

【错误一】 SqlServer提示错误:OleDbException 必须声明标量变量 今天用.net使用Oledb的方式操作SqlServer,却总是莫名其妙的报“必须声明标量变量…”,在代码里面分别采用了下面的两种方式,都无济于事: 方法一: OleDbParameter [] p = new OleDbParamete

【错误一】 SqlServer提示错误:OleDbException 必须声明标量变量

 

今天用.net使用Oledb的方式操作SqlServer,却总是莫名其妙的报“必须声明标量变量…”,在代码里面分别采用了下面的两种方式,都无济于事:

<span>方法一:</span>
Nach dem Login kopieren
<span>OleDbParameter</span>[] <span>p </span>= <span>new </span><span>OleDbParameter</span>[] {     <span>new </span><span>OleDbParameter</span>(<span>"@aa"</span>,1),    <span>new </span><span>OleDbParameter</span>(<span>"@bb"</span>,<span>"shelley"</span>),    <span>new </span><span>OleDbParameter</span>(<span>"@cc"</span>,<span>DateTime</span>.<span>Now</span>)};<span>Objcmd</span>.<span>Parameters</span>.<span>AddRange</span>(<span>p</span>);<span>方法二:</span>
Nach dem Login kopieren
<span>OleDbParameter </span><span>pp</span>;<span>pp </span>= <span>new </span><span>OleDbParameter</span>(<span>"@aa"</span>,<span>OleDbType</span>.<span>Integer</span>);<span>pp</span>.<span>Value </span>= 1;<span>Objcmd</span>.<span>Parameters</span>.<span>Add</span>(<span>pp</span>);<span>pp </span>= <span>new </span><span>OleDbParameter</span>(<span>"@bb"</span>, <span>OleDbType</span>.<span>LongVarChar</span>);<span>pp</span>.<span>Value </span>= <span>"shelley"</span>;<span>Objcmd</span>.<span>Parameters</span>.<span>Add</span>(<span>pp</span>);<span>pp </span>= <span>new </span><span>OleDbParameter</span>(<span>"@cc"</span>, <span>OleDbType</span>.<span>Date</span>);<span>pp</span>.<span>Value </span>= <span>DateTime</span>.<span>Now</span>;<span>Objcmd</span>.<span>Parameters</span>.<span>Add</span>(<span>pp</span>);
Nach dem Login kopieren
无论怎么样写,都会提示“必须声明标量变量@aa”,最终的原因是下面这句:
Nach dem Login kopieren
<span>OleDbCommand </span><span>Objcmd </span>= <span>new </span><span>OleDbCommand</span>(<span>"insert into test (a,b,c)values(@aa,@bb,@cc)"</span>, <span>Objconn</span>);
Nach dem Login kopieren
正确写法:
Nach dem Login kopieren
<span>OleDbCommand </span><span>Objcmd </span>= <span>new </span><span>OleDbCommand</span>(<span>"insert into test (a,b,c)values(?,?,?)"</span>, <span>Objconn</span>);
Nach dem Login kopieren
这样就正常通过了。
Nach dem Login kopieren
 
Nach dem Login kopieren
【错误二】Sybase提示错误:不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))
Nach dem Login kopieren

.net用Oledb操作Sybase,因为在一个sql语句中可能会多次用到同一个参数,代码如下:

<span>OleDbCommand </span><span>Objcmd </span>= <span>new </span><span>OleDbCommand</span>(<span>"update test set a=@aa where a=@aa"</span>, <span>Objconn</span>);<span>OleDbParameter</span>[] <span>p </span>= <span>new </span><span>OleDbParameter</span>[] {     <span>new </span><span>OleDbParameter</span>(<span>"aa"</span>,1),    <span>new </span><span>OleDbParameter</span>(<span>"aa"</span>,1)};<span>Objcmd</span>.<span>Parameters</span>.<span>AddRange</span>(<span>p</span>);<span>Objconn</span>.<span>Open</span>();<span>Objcmd</span>.<span>ExecuteNonQuery</span>();<span>Objconn</span>.<span>Close</span>();
Nach dem Login kopieren

上面的代码就会提示“不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))”错误。问题原因在于参数中存在两个相同名字,对于这种情况只需要写一个参数就可以了,改动如下:

<span>OleDbCommand </span><span>Objcmd </span>= <span>new </span><span>OleDbCommand</span>(<span>"update test set a=@aa where a=@aa"</span>, <span>Objconn</span>);<span>OleDbParameter</span>[] <span>p </span>= <span>new </span><span>OleDbParameter</span>[] {     <span>new </span><span>OleDbParameter</span>(<span>"aa"</span>,1)};
Nach dem Login kopieren

<span>OleDbCommand </span><span>Objcmd </span>= <span>new </span><span>OleDbCommand</span>(<span>"update test set a=@aa where a=@aa2"</span>, <span>Objconn</span>);<span>OleDbParameter</span>[] <span>p </span>= <span>new </span><span>OleDbParameter</span>[] {     <span>new </span><span>OleDbParameter</span>(<span>"aa"</span>,1),    <span>new </span><span>OleDbParameter</span>(<span>"aa2"</span>,1)};
Nach dem Login kopieren

【总结】

如果写一个程序,需要支持SqlServer和Sybase的时候这个地方需要特别注意:

1.SqlServer需要用“?”作为参数占位符,这样要求即使用到了同一个参数,也必须多次添加Parameter;

2.Sybase如果多次使用同一个参数,不能多次添加Parameter,否则会报错;

Erklärung dieser Website
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

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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So lösen Sie das Problem, dass das genannte Objekt bereits in der SQLServer-Datenbank vorhanden ist So lösen Sie das Problem, dass das genannte Objekt bereits in der SQLServer-Datenbank vorhanden ist Apr 05, 2024 pm 09:42 PM

Für Objekte mit demselben Namen, die bereits in der SQL Server-Datenbank vorhanden sind, müssen folgende Schritte ausgeführt werden: Bestätigen Sie den Objekttyp (Tabelle, Ansicht, gespeicherte Prozedur). Mit IF NOT EXISTS kann die Erstellung übersprungen werden, wenn das Objekt leer ist. Wenn das Objekt Daten enthält, verwenden Sie einen anderen Namen oder ändern Sie die Struktur. Verwenden Sie DROP, um vorhandene Objekte zu löschen (Vorsicht, Sicherung empfohlen). Suchen Sie nach Schemaänderungen, um sicherzustellen, dass keine Verweise auf gelöschte oder umbenannte Objekte vorhanden sind.

So importieren Sie eine MDF-Datei in SQL Server So importieren Sie eine MDF-Datei in SQL Server Apr 08, 2024 am 11:41 AM

Die Importschritte sind wie folgt: Kopieren Sie die MDF-Datei in das Datenverzeichnis von SQL Server (normalerweise C:\Programme\Microsoft SQL Server\MSSQL\DATA). Öffnen Sie in SQL Server Management Studio (SSMS) die Datenbank und wählen Sie Anhängen aus. Klicken Sie auf die Schaltfläche „Hinzufügen“ und wählen Sie die MDF-Datei aus. Bestätigen Sie den Datenbanknamen und klicken Sie auf die Schaltfläche OK.

Was tun, wenn der SQLServer-Dienst nicht gestartet werden kann? Was tun, wenn der SQLServer-Dienst nicht gestartet werden kann? Apr 05, 2024 pm 10:00 PM

Wenn der SQL Server-Dienst nicht gestartet werden kann, können Sie die folgenden Schritte beheben: Überprüfen Sie das Fehlerprotokoll, um die Grundursache zu ermitteln. Stellen Sie sicher, dass das Dienstkonto über die Berechtigung zum Starten des Dienstes verfügt. Überprüfen Sie, ob Abhängigkeitsdienste ausgeführt werden. Deaktivieren Sie die Antivirensoftware. Reparieren Sie die SQL Server-Installation. Wenn die Reparatur nicht funktioniert, installieren Sie SQL Server neu.

So überprüfen Sie die SQLServer-Portnummer So überprüfen Sie die SQLServer-Portnummer Apr 05, 2024 pm 09:57 PM

So zeigen Sie die SQL Server-Portnummer an: Öffnen Sie SSMS und stellen Sie eine Verbindung zum Server her. Suchen Sie den Servernamen im Objekt-Explorer, klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften. Sehen Sie sich auf der Registerkarte „Verbindung“ das Feld „TCP-Port“ an.

So stellen Sie eine versehentlich gelöschte Datenbank in SQL Server wieder her So stellen Sie eine versehentlich gelöschte Datenbank in SQL Server wieder her Apr 05, 2024 pm 10:39 PM

Wenn Sie eine SQL Server-Datenbank versehentlich löschen, können Sie die Datenbankaktivität stoppen; Party-Tools. Bitte sichern Sie Ihre Datenbank regelmäßig und aktivieren Sie die Transaktionsprotokollierung, um Datenverlust zu verhindern.

Wo ist die SQLServer-Datenbank? Wo ist die SQLServer-Datenbank? Apr 05, 2024 pm 08:21 PM

SQL Server-Datenbankdateien werden normalerweise am folgenden Standardspeicherort gespeichert: Windows: C:\Programme\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data Der Speicherort der Datenbankdatei kann durch Ändern des Datenbankdateipfads angepasst werden Einstellung.

Wie lösche ich SQL Server, wenn die Installation fehlschlägt? Wie lösche ich SQL Server, wenn die Installation fehlschlägt? Apr 05, 2024 pm 11:27 PM

Wenn die SQL Server-Installation fehlschlägt, können Sie sie mit den folgenden Schritten bereinigen: Deinstallieren Sie SQL Server. Löschen Sie Registrierungsschlüssel. Löschen Sie Dateien und Ordner. Starten Sie den Computer neu

So ändern Sie die englische SQLServer-Installation in Chinesisch So ändern Sie die englische SQLServer-Installation in Chinesisch Apr 05, 2024 pm 10:21 PM

Die englische Installation von SQL Server kann wie folgt geändert werden: Laden Sie den SQL Server-Dienst herunter. Ändern Sie die Sprache der Benutzeroberfläche.

See all articles