csharp: ODP.NET,System.Data.OracleClient(.net 4.0) and System.Data.OleDb读取Oracle g 11.2.0的区别...

ODP.NET:

引用:

using Oracle.DataAccess; //Oracle g 11.2.0
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
//下载 http://www.oracle.com/technetwork/topics/dotnet/downloads/net-downloads-160392.html
//引用:D:\app\geovindu\product\11.2.0\dbhome_1\ODP.NET\bin
//用法参考
//
//http://docs.oracle.com/cd/B28359_01/appdev.111/b28844/procedures_dot_net.htm
//http://docs.oracle.com/cd/B19306_01/win.102/b14307/OracleDataAdapterClass.htm //.net 4.0
//https://docs.oracle.com/cd/B19306_01/server.102/b14220/schema.htm

  数据库连接字符串:

 public string connectionString = @"DATA SOURCE=oracle11g;USER ID=geovin;password=geovindu;";

  

/// <summary>/// 20160918 涂聚文/// Geovin Du/// </summary>public class BookKindListDAL : IBookKindList{///<summary>/// 追加记录///</summary>///<param name="BookKindListInfo"></param>///<returns></returns>public int InsertBookKindList(BookKindListInfo bookKindList){int ret = 0;try{OracleParameter[] par = new OracleParameter[]{new OracleParameter("temTypeName",OracleDbType.NVarchar2,1000),new OracleParameter("temParent",OracleDbType.Int32,4),};par[0].Value = bookKindList.BookKindName;par[1].Value = bookKindList.BookKindParent;ret = OracleHelper.ExecuteSql("proc_Insert_BookKindList", CommandType.StoredProcedure, par);}catch (OracleException ex){throw ex;}return ret;}/// <summary>/// 追加记录返回/// </summary>/// <param name="authorList"></param>/// <param name="authorID"></param>/// <returns></returns>public int InsertBookKindOutput(BookKindListInfo bookKindList, out int bookKindLID){bookKindLID = 0;int ret = 0;try{OracleParameter[] par = new OracleParameter[]{new OracleParameter("temTypeName",OracleDbType.NVarchar2,1000),new OracleParameter("temParent",OracleDbType.Int32,4),new OracleParameter("temId",OracleDbType.Int32,4),};par[0].Value = bookKindList.BookKindName;par[1].Value = bookKindList.BookKindParent;par[2].Direction = ParameterDirection.Output;ret = OracleHelper.ExecuteSql("proc_Insert_BookKindOut", CommandType.StoredProcedure, par);if (ret > 0){bookKindLID =int.Parse(par[2].Value.ToString());}}catch (OracleException ex){throw ex;}return ret;}///<summary>///修改记录///</summary>///<param name="BookKindListInfo"></param>///<returns></returns>public int UpdateBookKindList(BookKindListInfo bookKindList){int ret = 0;try{OracleParameter[] par = new OracleParameter[]{new OracleParameter("BookKindID",OracleDbType.Int32,4),new OracleParameter("BookKindName",OracleDbType.NVarchar2,1000),new OracleParameter("BookKindParent",OracleDbType.Int32,4),};par[0].Value = bookKindList.BookKindID;par[1].Value = bookKindList.BookKindName;par[2].Value = bookKindList.BookKindParent;ret = OracleHelper.ExecuteSql("proc_Update_BookKindList", CommandType.StoredProcedure, par);}catch (OracleException ex){throw ex;}return ret;}///<summary>/// 删除记录///</summary>///<param name="bookKindIDInfo"></param>///<returns></returns>public bool DeleteBookKindList(int bookKindID){bool ret = false;try{OracleParameter par = new OracleParameter("BookKindID", bookKindID);int temp = 0;temp = OracleHelper.ExecuteSql("proc_Delete_BookKindList", CommandType.StoredProcedure, par);if (temp != 0){ret = true;}}catch (OracleException ex){throw ex;}return ret;}///<summary>/// 查询记录///</summary>///<param name="bookKindIDInfo"></param>///<returns></returns>public BookKindListInfo SelectBookKindList(int bookKindID){BookKindListInfo bookKindList = null;try{OracleParameter par = new OracleParameter("BookKindID", bookKindID);using (OracleDataReader reader = OracleHelper.GetReader("proc_Select_BookKindList", CommandType.StoredProcedure, par)){if (reader.Read()){bookKindList = new BookKindListInfo();bookKindList.BookKindID = (!object.Equals(reader["BookKindID"], null)) ? (int)reader["BookKindID"] : 0;bookKindList.BookKindName = (!object.Equals(reader["BookKindName"], null)) ? (string)reader["BookKindName"] : "";bookKindList.BookKindParent = (!object.Equals(reader["BookKindParent"], null)) ? (int)reader["BookKindParent"] : 0;}}}catch (OracleException ex){throw ex;}return bookKindList;}///<summary>/// 查询所有记录///</summary>///<returns></returns>public List<BookKindListInfo> SelectBookKindListAll(){List<BookKindListInfo> list = new List<BookKindListInfo>();BookKindListInfo bookKindList = null;try{using (OracleDataReader reader = OracleHelper.GetReader("proc_Select_BookKindListAll", CommandType.StoredProcedure, null)){while (reader.Read()){bookKindList = new BookKindListInfo();bookKindList.BookKindID = (!object.Equals(reader["BookKindID"], null)) ? (int)reader["BookKindID"] : 0;bookKindList.BookKindName = (!object.Equals(reader["BookKindName"], null)) ? (string)reader["BookKindName"] : "";bookKindList.BookKindParent = (!object.Equals(reader["BookKindParent"], null)) ? (int)reader["BookKindParent"] : 0;list.Add(bookKindList);}}}catch (OracleException ex){throw ex;}return list;}///<summary>/// 查询所有记录///</summary>///<returns></returns>public DataTable SelectBookKindListDataTableAll(){DataTable dt = new DataTable();try{using (DataTable reader = OracleHelper.GetTable("proc_Select_BookKindListAll", CommandType.StoredProcedure, null)){dt = reader;}}catch (OracleException ex){throw ex;}return dt;}}

  System.Data.OracleClient(.net 4.0)

引用:

using System.Collections;
using System.Data;
using System.Configuration;
using System.Data.OracleClient;//.net 4.0//用法参考
//https://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracledataadapter(v=vs.110).aspx
//http://blog.csdn.net/chinawn/article/details/336904
//C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.OracleClient.dll

  数据库连接字符串:

    public string connectionString = @"Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = oracle11g)));user id=geovin;password=geovindu;Persist Security Info=True;";

  

/// <summary>/// 20160918 涂聚文/// Geovin Du/// </summary>public class BookKindListDAL : IBookKindList{///<summary>/// 追加记录///</summary>///<param name="BookKindListInfo"></param>///<returns></returns>public int InsertBookKindList(BookKindListInfo bookKindList){int ret = 0;try{OracleParameter[] par = new OracleParameter[]{new OracleParameter("temTypeName",OracleType.NVarChar,1000),new OracleParameter("temParent",OracleType.Number,4),};par[0].Value = bookKindList.BookKindName;par[1].Value = bookKindList.BookKindParent;ret = OracleHelper.ExecuteSql("proc_Insert_BookKindList", CommandType.StoredProcedure, par);}catch (OracleException ex){throw ex;}return ret;}/// <summary>/// 追加记录返回/// </summary>/// <param name="authorList"></param>/// <param name="authorID"></param>/// <returns></returns>public int InsertBookKindOutput(BookKindListInfo bookKindList, out int bookKindLID){bookKindLID = 0;int ret = 0;try{OracleParameter[] par = new OracleParameter[]{new OracleParameter("temTypeName",OracleType.NVarChar,1000),new OracleParameter("temParent",OracleType.Number,4),new OracleParameter("temId",OracleType.Number,4),};par[0].Value = bookKindList.BookKindName;par[1].Value = bookKindList.BookKindParent;par[2].Direction = ParameterDirection.Output;ret = OracleHelper.ExecuteSql("proc_Insert_BookKindOut", CommandType.StoredProcedure, par);if (ret > 0){bookKindLID =int.Parse(par[2].Value.ToString());}}catch (OracleException ex){throw ex;}return ret;}///<summary>///修改记录///</summary>///<param name="BookKindListInfo"></param>///<returns></returns>public int UpdateBookKindList(BookKindListInfo bookKindList){int ret = 0;try{OracleParameter[] par = new OracleParameter[]{new OracleParameter("BookKindID",OracleType.Number,4),new OracleParameter("BookKindName",OracleType.NVarChar,1000),new OracleParameter("BookKindParent",OracleType.Number,4),};par[0].Value = bookKindList.BookKindID;par[1].Value = bookKindList.BookKindName;par[2].Value = bookKindList.BookKindParent;ret = OracleHelper.ExecuteSql("proc_Update_BookKindList", CommandType.StoredProcedure, par);}catch (OracleException ex){throw ex;}return ret;}///<summary>/// 删除记录///</summary>///<param name="bookKindIDInfo"></param>///<returns></returns>public bool DeleteBookKindList(int bookKindID){bool ret = false;try{OracleParameter par = new OracleParameter("BookKindID", bookKindID);int temp = 0;temp = OracleHelper.ExecuteSql("proc_Delete_BookKindList", CommandType.StoredProcedure, par);if (temp != 0){ret = true;}}catch (OracleException ex){throw ex;}return ret;}///<summary>/// 查询记录///</summary>///<param name="bookKindIDInfo"></param>///<returns></returns>public BookKindListInfo SelectBookKindList(int bookKindID){BookKindListInfo bookKindList = null;try{OracleParameter par = new OracleParameter("BookKindID", bookKindID);using (OracleDataReader reader = OracleHelper.GetReader("proc_Select_BookKindList", CommandType.StoredProcedure, par)){if (reader.Read()){bookKindList = new BookKindListInfo();bookKindList.BookKindID = (!object.Equals(reader["BookKindID"], null)) ? (int)reader["BookKindID"] : 0;bookKindList.BookKindName = (!object.Equals(reader["BookKindName"], null)) ? (string)reader["BookKindName"] : "";bookKindList.BookKindParent = (!object.Equals(reader["BookKindParent"], null)) ? (int)reader["BookKindParent"] : 0;}}}catch (OracleException ex){throw ex;}return bookKindList;}///<summary>/// 查询所有记录///</summary>///<returns></returns>public List<BookKindListInfo> SelectBookKindListAll(){List<BookKindListInfo> list = new List<BookKindListInfo>();BookKindListInfo bookKindList = null;try{using (OracleDataReader reader = OracleHelper.GetReader("proc_Select_BookKindListAll", CommandType.StoredProcedure, null)){while (reader.Read()){bookKindList = new BookKindListInfo();bookKindList.BookKindID = (!object.Equals(reader["BookKindID"], null)) ? (int)reader["BookKindID"] : 0;bookKindList.BookKindName = (!object.Equals(reader["BookKindName"], null)) ? (string)reader["BookKindName"] : "";bookKindList.BookKindParent = (!object.Equals(reader["BookKindParent"], null)) ? (int)reader["BookKindParent"] : 0;list.Add(bookKindList);}}}catch (OracleException ex){throw ex;}return list;}///<summary>/// 查询所有记录///</summary>///<returns></returns>public DataTable SelectBookKindListDataTableAll(){DataTable dt = new DataTable();try{using (DataTable reader = OracleHelper.GetTable("proc_Select_BookKindListAll", CommandType.StoredProcedure, null)){dt = reader;}}catch (OracleException ex){throw ex;}return dt;}}

  System.Data.OleDb

 string connString = "Provider=OraOLEDB.Oracle.1;User ID=geovin;Password=geovindu;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = oracle11g)))";OleDbConnection conn = new OleDbConnection(connString);try{conn.Open();MessageBox.Show(conn.State.ToString());DataTable dt = conn.GetSchema(this.comboBox1.Text.Trim());this.dataGridView1.DataSource = dt;this.textBox1.Text = GetColumnNames(dt);}catch (Exception ex){MessageBox.Show(ex.Message.ToString());}finally{conn.Close();}

  oracle package sql:

/**创建一个名为pkgBookKinds的包查所表中所有内容**/
create or replace package pkg_BookKinds is
--定义一个公有的游标类型cursor_pdt
--ref 可以在程序间传递结果集
--一个程序里打开游标变量,在另外的程序里处理数据
type cursor_pdt is ref cursor;
--声明一个存储过程 ,游标类型参数为输出类型
procedure proc_GetAllBookKind(cur_set out cursor_pdt);
end pkg_BookKinds;/**创建一个包体**/
create or replace package body pkg_BookKinds is--实现包中没有实现的存储过程procedure proc_GetAllBookKind(cur_set out cursor_pdt) asbegin --打开游标,由于定义游标时使用ref处理游标可以推迟到客户端open cur_set for select * from BookKindList;end;
end;/**使用过程测试定义的存储过程**/
declare
--定义游标类型的变量
cur_set pkg_BookKinds.cursor_pdt;
--定义行类型
pdtrow BookKindList%rowtype;
begin--执行存储过程pkg_BookKinds.proc_GetAllBookKind(cur_set);--遍历游标中的数据LOOP--取当前行数据存入pdtrowFETCH cur_set INTO pdtrow;--如果未获取数据就结束循环EXIT WHEN cur_set%NOTFOUND;--输出获取到的数据DBMS_OUTPUT.PUT_LINE (pdtrow.BookKindID||','||pdtrow.BookKindName);END LOOP;CLOSE cur_set;end;

 

--创建包以游标的形式返回BookKindList的结果集
create or replace package pkg_BookKindList is
-- Author  : geovindutype mycur is ref cursor;  procedure fun_GetRecords(cur_return out mycur);
end pkg_BookKindList;create or replace package body pkg_BookKindList is-- Function and procedure implementationsprocedure fun_GetRecords(cur_return out mycur)is    beginopen cur_return for select * from BookKindList;end fun_GetRecords;end pkg_BookKindList;declare 
--定义游标类型的变量
cur_return pkg_BookKindList.mycur;
--定义行类型
pdtrow BookKindList%rowtype;
begin--执行存储过程pkg_BookKindList.fun_GetRecords(cur_return);--遍历游标中的数据LOOP--取当前行数据存入pdtrowFETCH cur_return INTO pdtrow;--如果未获取数据就结束循环EXIT WHEN cur_return%NOTFOUND;--输出获取到的数据DBMS_OUTPUT.PUT_LINE (pdtrow.BookKindID||','||pdtrow.BookKindName);END LOOP;CLOSE cur_return;
end;

  

 

 C# 3.5 调用查询:

 /// <summary>/// /// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Form3_Load(object sender, EventArgs e){BindGridView();}/// <summary>/// /// </summary>private void BindGridView(){OracleConnection conn = new OracleConnection(connectionString);//ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionStringOracleCommand comm = new OracleCommand("pkg_BookKindList.fun_GetRecords", conn);comm.Parameters.Add("cur_return", OracleType.Cursor).Direction = ParameterDirection.Output;comm.CommandType = CommandType.StoredProcedure;DataSet ds = new DataSet();using (OracleDataAdapter da = new OracleDataAdapter(comm)){da.Fill(ds);}this.dataGridView1.DataSource = ds.Tables[0].DefaultView;}

  

 /// <summary>/// /// </summary>private void BindGridViewOther(){OracleConnection conn = new OracleConnection(connectionString);//ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionStringOracleCommand comm = new OracleCommand("pkg_BookKindList.fun_GetRecords", conn);comm.CommandType = CommandType.StoredProcedure;//定义参数,注意参数名必须与存储过程定义时一致,且类型为OracleType.CursorOracleParameter cur_set = new OracleParameter("cur_return", OracleType.Cursor);//设置参数为输出类型cur_set.Direction = ParameterDirection.Output;           //添加参数comm.Parameters.Add(cur_set);DataSet ds = new DataSet();using (OracleDataAdapter da = new OracleDataAdapter(comm)){da.Fill(ds);}this.dataGridView1.DataSource = ds.Tables[0].DefaultView;}

  

Oracle sql:

---某条记录的字段
drop PROCEDURE proc_Select_BookKindName;CREATE OR REPLACE PROCEDURE proc_Select_BookKindName(kind_id IN BookKindList.BookKindID%type) AS--声明语句段v_name varchar2(20);
BEGIN--执行语句段SELECT o.BookKindName INTO v_name FROM BookKindList o where o.BookKindID=kind_id;dbms_output.put_line(v_name);
EXCEPTION--异常处理语句段WHEN NO_DATA_FOUND THEN dbms_output.put_line('NO_DATA_FOUND');
END;--测试
begin
proc_Select_BookKindName(1);
end;---一条记录
--创建包:
create or replace package pack_BookKindId is type cur_BookKindId is ref cursor;  
end pack_BookKindId; 
--创建存储过程
create or replace procedure proc_curBookKindId(p_id in number,p_cur out pack_BookKindId.cur_BookKindId) 
is   v_sql varchar2(400);
begin  if p_id = 0 then   open p_cur for select * from BookKindList; else   v_sql := 'select * from BookKindList where BookKindID =: p_id';  open p_cur for v_sql using p_id;   end if;  
end proc_curBookKindId;--测试查询一条记录存储过程
-- Test statements here  
set serveroutput on
declare   v_id number := 1; --0 时,所有记录 v_row BookKindList%rowtype;   --注意这里是表名p_cur pack_BookKindId.cur_BookKindId;
begin   proc_curBookKindId(v_id, p_cur);  loop  fetch p_cur into v_row;  exit when p_cur%notfound;  DBMS_OUTPUT.PUT_LINE(v_row.BookKindName||'='||v_row.BookKindID);  end loop;  close p_cur;  
end; 

  

ODP.NET:

  ///<summary>/// 查询所有记录///</summary>///<returns></returns>public List<BookKindListInfo> SelectBookKindListAll(){List<BookKindListInfo> list = new List<BookKindListInfo>();BookKindListInfo bookKindList = null;try{//定义参数,注意参数名必须与存储过程定义时一致,且类型为OracleType.CursorOracleParameter cur_set = new OracleParameter("cur_return", OracleDbType.RefCursor);//设置参数为输出类型cur_set.Direction = ParameterDirection.Output;//OracleHelper.ExecuteReader(connectionString, CommandType.StoredProcedure, "pkg_Select_BookKindListAll.proc_Select_BookKindListAll", cur_set)using (OracleDataReader reader = OracleHelper.GetReader("pkg_Select_BookKindListAll.proc_Select_BookKindListAll", CommandType.StoredProcedure, cur_set)){while (reader.Read()){bookKindList = new BookKindListInfo();string s = reader["BookKindID"].ToString();bookKindList.BookKindID = (!object.Equals(reader["BookKindID"], null)) ? (decimal)reader["BookKindID"] : 0;bookKindList.BookKindName = (!object.Equals(reader["BookKindName"], null)) ? (string)reader["BookKindName"] : "";bookKindList.BookKindParent = (!object.Equals(reader["BookKindParent"], null)) ? (decimal)reader["BookKindParent"] : 0;list.Add(bookKindList);}}}catch (OracleException ex){throw ex;}return list;}///<summary>/// 查询所有记录///</summary>///<returns></returns>public DataTable SelectBookKindListDataTableAll(){DataTable dt = new DataTable();try{//定义参数,注意参数名必须与存储过程定义时一致,且类型为OracleType.CursorOracleParameter cur_set = new OracleParameter("cur_return", OracleDbType.RefCursor);//设置参数为输出类型cur_set.Direction = ParameterDirection.Output;//添加参数//comm.Parameters.Add(cur_set);using (DataTable reader = OracleHelper.GetTable("pkg_Select_BookKindListAll.proc_Select_BookKindListAll", CommandType.StoredProcedure, cur_set)){dt = reader;}}catch (OracleException ex){throw ex;}return dt;}

  

转载于:https://www.cnblogs.com/geovindu/p/5881963.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AngularJS快速入门指南15:API

API即Application Programming Interface&#xff08;应用程序接口&#xff09;。 AngularJS全局API AngularJS全局API是一组全局JavaScript函数&#xff0c;用来进行一些常用的操作&#xff0c;例如&#xff1a; 比较两个对象迭代对象进行数据格式转换 全局API函数可以通过an…

Java 9幕后花絮:新功能从何而来?

找出Java幕后发生的事情&#xff0c;以及新功能如何实现 在上一篇文章中&#xff0c;我们介绍了即将发布的Java 9版本的新功能和尚待解决的功能&#xff0c;并简要提到了将新功能添加到下一个版本之前要经历的过程。 由于此过程几乎影响了所有Java开发人员&#xff0c;但大多数…

TypeScript 联合类型(union type)

TS是JS的超集&#xff0c;在JS的基础上添加了一套类型系统&#xff0c;这样的TS可以被静态分析带来的好处显而易见。 let val: string val;声明一个string类型的变量val。 let val: string val; val 1; // Type number is not assignable to type string.因为number类型和…

sudo apt-get install libstdc++6

sudo apt-get install libstdc6 yum install libncurses.so.5 sudo apt-get install libncurses.so.5 sudo apt-get install lib32ncurses5 apt-get update把源更新一下 使用gdb时的指令 (gbd) info line *0x08xxxx sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.…

AngularJS快速入门指南03:表达式

AngularJS通过表达式将数据绑定到HTML。 AngularJS表达式 AngularJS表达式写在双大括号中&#xff1a;{{ 表达式语句 }}。 AngularJS表达式绑定数据到HTML的方式与ng-bind指令的方式相同。 AngularJS会准确地将表达式“输出”为计算的结果。 AngularJS表达式与JavaScript表达式…

零基础快速上手HarmonyOS ArkTS开发2---ArkTS开发实践

ArkTS开发实践&#xff1a; 接着上一次零基础快速上手HarmonyOS ArkTS开发1---运行Hello World、ArkTS开发语言介绍继续&#xff0c; 在上一次对于ArkTS的基础知识进行了学习&#xff0c;依照官方的课程计划&#xff0c;还有两个具体的小案例需要来实践实践&#xff1a; 实践出…

无状态Spring安全性第2部分:无状态身份验证

Spring Stateless Security系列的第二部分是关于以无状态方式探索身份验证的方法。 如果您错过了CSRF的第一部分&#xff0c;可以在这里找到。 因此&#xff0c;在谈论身份验证时&#xff0c;其全部内容就是让客户端以可验证的方式向服务器标识自己。 通常&#xff0c;这始于服…

TypeScript 交叉类型(intersection type)

在TS中和联合类型(union type)对应的还有交叉类型(intersection type)。 交叉类型的出现主要为了组合多个对象类型(object type)&#xff0c;因为相对于interface&#xff0c;object type没法继承&#xff0c;那么就可以通过union type来实现混合的目的&#xff0c;从而实现继承…

【转】JAVA中的转义字符

JAVA中转义字符&#xff1a; 1.八进制转义序列&#xff1a;\ 1到3位5数字&#xff1b;范围\000~\377 \0&#xff1a;空字符 2.Unicode转义字符&#xff1a;\u 四个十六进制数字&#xff1b;0~65535 \u0000&#xff1a;空字符 3.特殊字符&#xff1a;就3个 \"&#xff1a…

八、VueJs 填坑日记之参数传递及内容页面的开发

我们在上一篇博文中&#xff0c;渲染出来了一个列表&#xff0c;并在列表中使用了router-link标签&#xff0c;标签内的&#xff1a;to就是链接地址&#xff0c;昨天咱们是<router-link :to"/content/ i.id">这样写的&#xff0c;今天我们来完成内容页面的渲染…

为Kindeditor控件添加图片自动上传功能

Kindeditor是一款功能强大的开源在线HTML编辑器&#xff0c;支持所见即所得的编辑效果。它使用JavaScript编写&#xff0c;可以无缝地与多个不同的语言环境进行集成&#xff0c;如.NET、PHP、ASP、Java等。官方网站可以查看这里&#xff1a;http://kindeditor.net/index.php Ki…

TypeScript类型推论(Type Inference)

要完全理解类型推论需要完整理解类型上下文&#xff0c;并且理解TS对于是否可以使用类型推论是基于静态分析完成的。 上下文类型应用在许多地方。常见的例子包括函数调用的参数&#xff0c;赋值的右手端位置&#xff0c;类型断言&#xff0c;对象和数组的成员&#xff0c;和返回…

4个万无一失的技巧让您开始使用JBoss BRMS 6.0.3

上周&#xff0c;红帽发布了标记为6.0.3的JBoss BRMS的下一版本&#xff0c;已订阅的用户可以在其客户门户中使用。 如果您对该版本的新增功能感到好奇&#xff0c;请在客户门户网站上在线查看版本说明和其余文档 。 我们正在寻找一些简单的方法来开始使用此新版本&#xff0…

统一命名规则

1. #define 保护 所有头文件都应该使用 #define 防止头文件被多重包含, 命名格式当是:<PROJECT>_<PATH>_<FILE>_H_ 项目 SkinTK中的头文件 SkinTK/SkinTK/targetver.h 可按如下方式保护: #ifndef SKINTK_SKINTK_TARGETVER_H_ #define SKINTK_SKINTK_TARGETVE…

中国移动MM7 API用户手册(七)

4.4 VASP接收状态报告&#xff08;上行业务&#xff09;当VASP在发送MM7SubmitReq给MMSC时设置需要发送状态报告的请求为true时&#xff0c;MMSC在收到MM7SubmitReq后&#xff0c;会发送状态报告给VASP&#xff0c;此时VASP可以进行接收。接收方式和接收传送消息一样&#xff…

如何仅通过CSS实现多行文本超长自动省略号

在CSS中&#xff0c;我们可以通过下面的样式实现DIV元素中文本超长后自动截断并以省略号结尾&#xff1a; overflow: hidden;word-break: normal;text-overflow: ellipsis; text-overflow: ellipsis是实现文本截断后以省略号结尾的关键样式&#xff0c;但问题是如果添加该样式则…

带有Angular JS的Java EE 7 – CRUD,REST,验证–第2部分

这是Angular JS承诺的Java EE 7的后续版本–第1部分 。 花了比我预期更长的时间&#xff08;找到时间来准备代码和博客文章&#xff09;&#xff0c;但是终于到了&#xff01; 应用程序 第1部分中的原始应用程序只是带有分页的简单列表&#xff0c;以及提供列表数据的REST服务…

Chrome不显示OPTIONS请求的解决方法2021版chrome90

在chrome90上之前展示跨域请求预检请求的方法失效了&#xff1a; 在chrome地址栏总输入 chrome://flags/#out-of-blink-cors 将其设置为Disabled后重启浏览器 在chrome://flags找不到选项out-of-blink-cors。取而代之的是chrome将预检请求放到了控制台网络面板的 OTHER 面板中。…

安装CentOs 5.5后无法显中文(中文乱码)

症状&#xff1a;在使用CentOS 系统时&#xff0c;安装的时候可能你会遇到英文的CentOS系统&#xff0c;在这中情况下安装CentOS系统时是默认安装&#xff08;即英文&#xff09;。安装完毕后&#xff0c;上网出现的却是中文乱码。 解决方法&#xff1a; 到CentOs资源网站上去找…

粗读《构建之法》后的思考和收获

利用出差的空挡&#xff0c;快速阅读了一下邹欣老师的《构建之法》一书。对我校软件工程的教学改革确实有很多值得参考的地方&#xff0c;强调实践环节和社会实际工作流程的结合&#xff0c;而不是为了实验而实验。 在阅读过程也有一些问题。 问题1&#xff1a;MSF中强调人员的…