.net,ADO.NET,oracle,DBHELPERORA 我们知道.NET中调用ORACLE 的过程没有调用MS-SQLSERVER中的存储过程那么方便,尤其用到参数输出的时候,但是ORACLE的功能强大不会这个不能处理,这个你懂得,呵呵。 2个解决方案,一个是ORACLE中的函数可以带参数输出的,这
.net,ADO.NET,oracle,DBHELPERORA
我们知道.NET中调用ORACLE 的过程没有调用MS-SQLSERVER中的存储过程那么方便,尤其用到参数输出的时候,但是ORACLE的功能强大不会这个不能处理,这个你懂得,呵呵。
2个解决方案,一个是ORACLE中的函数可以带参数输出的,这个比较吻合SQLSERVER中的存储过程(个人比较意见用 ORACLE中的函数应对SQLSERVER中的存储过
程。
二就是用PROCEDURE 的OUT参数带出结果来解决这个问题。
下面来做个程序测试
<img src="/static/imghwm/default1.png" data-src="pic/20151007/fv4kap0u3kx.png" class="lazy" alt=".NET中使用ORACLE函数和过程并输出参数(1)" ><img src="/static/imghwm/default1.png" data-src="pic/20151007/v00wnsymgll.png" class="lazy" alt=".NET中使用ORACLE函数和过程并输出参数(1)" ><span>qiantian</span>" runat="<span>server</span>"> <p> Button1" runat="<span>server</span>" OnClick="<span>Button1_Click</span>" Text="<span>测试FUNCTION输出</span>" /> button2" runat="<span>server</span>" OnClick="<span>button2_Click</span>" Text="<span>测试PROCEDUCE输出</span>" /> <br> Button3" runat="<span>server</span>" Text="<span>测试FUNCTION三层</span>" OnClick="<span>Button3_Click</span>" /> Button4" runat="<span>server</span>" Text="<span>测试PROCEDURE三层</span>" OnClick="<span>Button4_Click</span>" /> </p>
后台代码 针对测试FUNCTION输出(直接写在代码里面)
<span>protected</span> <span>void</span> Button1_Click(<span>object</span> sender, EventArgs e) { OracleConnection conn = <span>new</span> OracleConnection("<span>Data Source=yu;Persist Security Info=True;User ID=$$$$$$;Password=$$$$$$$$;Unicode=True;</span>"); OracleCommand cmd = <span>new</span> OracleCommand(); cmd.Connection = conn; cmd.CommandText = "<span>F_ACC_CREATEPERMISSION</span>"; cmd.CommandType = CommandType.StoredProcedure; <span>// add the parameters, including the return parameter to retrieve </span> cmd.Parameters.Add("<span>CategoryID</span>", OracleType.Number).Value = 555; cmd.Parameters.Add("<span>Description</span>", OracleType.VarChar, 50).Value = "<span>zzz1</span>"; <span>// the return value </span> cmd.Parameters.Add("<span>Result</span>", OracleType.Number).Direction = ParameterDirection.ReturnValue; <span>// execute the function</span> conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); <span>// output the result</span> Response.Write("<span>Resultis: </span>" + cmd.Parameters["<span>Result</span>"].Value); }
后台代码 针对测试FUNCATION (通过参数 数据库类的 三层模式输出)
<img src="/static/imghwm/default1.png" data-src="pic/20151007/fv4kap0u3kx.png" class="lazy" alt=".NET中使用ORACLE函数和过程并输出参数(1)" ><img src="/static/imghwm/default1.png" data-src="pic/20151007/v00wnsymgll.png" class="lazy" alt=".NET中使用ORACLE函数和过程并输出参数(1)" ><span> <span>protected</span> <span>void</span> Button3_Click(<span>object</span> sender, EventArgs e) { <span>// Accounts.Bus.Permissions myperm = new Accounts.Bus.Permissions();</span> Accounts.Data.Permission myperm = <span>new</span> Accounts.Data.Permission(); <span>int</span> i = myperm.Create(555, "<span>zzz3</span>"); Response.Write(i.ToString()); } </span><p> </p><p><br> </p><p> </p>
PERMISSION 类中代码
<span>/// </span> <span>/// 创建一个权限</span> <span>/// </span> <span>public</span> <span>int</span> Create(<span>int</span> categoryID, <span>string</span> description) { <span>int</span> rowsAffected; OracleParameter[] parameters = { <span>new</span> OracleParameter("<span>CategoryID</span>", OracleType.Number), <span>new</span> OracleParameter("<span>Description</span>", OracleType.VarChar,50) }; parameters[0].Value = categoryID; parameters[1].Value = description; <span>return</span> DbHelperOra.RunProcedure("<span>F_ACC_CREATEPERMISSION</span>", parameters, <span>out</span> rowsAffected); }
DbHelperOra中的代码
<span>/// </span> <span>/// 执行存储过程,返回影响的行数 对应ORACLE 的FUNCTION 的RETURN用的 </span> <span>/// </span> <span>/// <param name="storedProcName">存储过程名</span> <span>/// <param name="parameters">存储过程参数</span> <span>/// <param name="rowsAffected">影响的行数</span> <span>/// </span> <span>public</span> <span>static</span> <span>int</span> RunProcedure(<span>string</span> storedProcName, IDataParameter[] parameters, <span>out</span> <span>int</span> rowsAffected) { <span>using</span> (OracleConnection connection = <span>new</span> OracleConnection(connectionString)) { <span>int</span> result; connection.Open(); OracleCommand command = BuildIntCommand(connection, storedProcName, parameters); rowsAffected = command.ExecuteNonQuery(); result = <span>int</span>.Parse(command.Parameters["<span>ReturnValue</span>"].Value.ToString()); <span>//Connection.Close();</span> <span>return</span> result; } }
BuildIntCommand调用的代码段
<span>/// </span> <span>/// 创建OracleCommand 对象实例(用来返回一个整数值) </span> <span>/// </span> <span>/// <param name="storedProcName">存储过程名</span> <span>/// <param name="parameters">存储过程参数</span> <span>/// OracleCommand 对象实例</span> <span>private</span> <span>static</span> OracleCommand BuildIntCommand(OracleConnection connection, <span>string</span> storedProcName, IDataParameter[] parameters) { OracleCommand command = BuildQueryCommand(connection, storedProcName, parameters); <span>//command.Parameters.Add(new OracleParameter("ReturnValue", OracleType.Int32, 4, ParameterDirection.ReturnValue,false, 0, 0, string.Empty, DataRowVersion.Default, null));</span> command.Parameters.Add("<span>ReturnValue</span>", OracleType.Number).Direction = ParameterDirection.ReturnValue; <span>return</span> command; }
BuildQueryCommand调用的代码段
<span>/// </span> <span>/// 构建OracleCommand 对象(用来返回一个结果集,而不是一个整数值)</span> <span>/// </span> <span>/// <param name="connection">数据库连接</span> <span>/// <param name="storedProcName">存储过程名</span> <span>/// <param name="parameters">存储过程参数</span> <span>/// OracleCommand</span> <span>private</span> <span>static</span> OracleCommand BuildQueryCommand(OracleConnection connection, <span>string</span> storedProcName, IDataParameter[] parameters) { OracleCommand command = <span>new</span> OracleCommand(storedProcName, connection); command.CommandType = CommandType.StoredProcedure; <span>foreach</span> (OracleParameter parameter <span>in</span> parameters) { command.Parameters.Add(parameter); } <span>return</span> command; }

mysqloffersvariouscharactersetsforstringdatatypes:1)latin1 forwesterneuropeanlanguages,2)utf8 formultingualsupport,3)utf8mb4f OREXTEDENDENDENENICODECLUDINGEMOJIS,4)UCS2FORIXED-WIDTHENCODING,5)assiiforbasiclatin.ChoosideStherightStetSetensensersdaintegrity

流式傳輸BLOB確實比直接存儲更好,因為它能減少內存使用和提高性能。 1)通過逐步讀取和處理文件,避免了數據庫膨脹和性能下降。 2)流式傳輸需要更複雜的代碼邏輯,且可能增加I/O操作次數。

mySqlStringTypesimpactStorageAndPerformanCeaseAsfollows:1)長度,始終使用theSamestoragespace,whatcanbefasterbutlessspace-felfficity.2)varCharisvariable varcharisvariable length,morespace-morespace-morespace-effficitybuteftife buteftife butfority butfority textifforlyslower.3)

mysqlStringTypesIncludeVarChar,文本,char,Enum和set.1)varCharisVersAtileForvariable-lengthStringStringSuptoPuptOuptoPepePecifiedLimit.2)textisidealforlargetStortStorStoverStoverStorageWithoutAutAdefinedLength.3)charlisfixed-lenftenge,for forConsistentDatalikeCodes.4)

MySQLoffersvariousstringdatatypes:1)CHARforfixed-lengthstrings,2)VARCHARforvariable-lengthtext,3)BINARYandVARBINARYforbinarydata,4)BLOBandTEXTforlargedata,and5)ENUMandSETforcontrolledinput.Eachtypehasspecificusesandperformancecharacteristics,sochoose

TograntpermissionstonewMySQLusers,followthesesteps:1)AccessMySQLasauserwithsufficientprivileges,2)CreateanewuserwiththeCREATEUSERcommand,3)UsetheGRANTcommandtospecifypermissionslikeSELECT,INSERT,UPDATE,orALLPRIVILEGESonspecificdatabasesortables,and4)

toadduserInmysqleffect和securly,跟隨台詞:1)USEtheCreateUserStattoDaneWuser,指定thehostandastrongpassword.2)GrantNecterAryAryaryPrivilegesSustherthing privilegesgeStatement,usifementStatement,adheringtotheprinciplelastprefilegege.3)

toaddanewuserwithcomplexpermissionsinmysql,loldtheSesteps:1)創建eTheEserWithCreateuser'newuser'newuser'@''localhost'Indedify'pa ssword';。 2)GrantreadAccesstoalltablesin'mydatabase'withGrantSelectOnMyDatabase.to'newuser'@'localhost';。 3)GrantWriteAccessto'


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1
好用且免費的程式碼編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境