C#调用存储过程,获取异常信息问题

C#的代码如下:
try
{
//调用存储过程
cmd.ExecuteNonQuery();
strErr = cmd.Parameters["@ErrMsg"].value.tostring();//strErr 是存储过程的输出参数
}
catch(Exception e)
(
strErr = e.Message.ToString();
return;
)
测试情况:我通过存储过程往数据库中插入一条重复的记录(已设置主键),调试存储过程时,输出参数strErr的错误消息大概为违反表的主键唯一性约束;但是在C#调试,执行ExecuteNonQuery()后,就跳入catch语句中,strErr的错误消息为Error converting data type nvarchar to int.为什么错误不一样呢?谁能帮我解释下原因,折腾了好几天???

2个回答

你先手动调下你的存储过程,看存储过程是否抛出异常,如果存储过程调用没有问题,那是不是你的外部程序异常
参考自:
MySQL存储过程详解 http://www.data.5helpyou.com/article314.html

谢谢你们热心的回答,原因在于我在c#传入存储过程的类型,有的DBType、SqlDbType,统一成一种类型,就可以输出存储过程的报错信息。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
VS2010 C# 调用存储过程

C#具体代码调用以下存储过程 USE [HWATT] GO /****** Object: StoredProcedure [dbo].[PRO_ADDCARD] Script Date: 02/16/2016 13:38:31 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[PRO_ADDCARD] @iismanual smallint, @ircdtime datetime, @idevid bigint, @iemployeecode varchar(16), @iemployeename varchar(250), @iimagedata image, @ircdtype smallint, @ifrom_check smallint, @ifaceidno varchar(5), @iadminid bigint, @iimagestatus smallint, @isnewrcd bigint output AS begin /* Procedure Text */ declare @iemployeeid bigint declare @iimgid bigint declare @icount bigint declare @idevclass smallint declare @istrcardid varchar(50) declare @isqltext varchar(5000) declare @iopid bigint set @idevclass = 0 set @isnewrcd = 0 set @ircdtype = 0 set @iemployeeid = (SELECT MAX(EMPLOYEEID) FROM KQZ_EMPLOYEE where employeecode = @iemployeecode and brchid = (select max(brchid) from kqz_employee where employeecode = @iemployeecode AND BRCHID != -3)) IF(@iemployeeid is null) BEGIN INSERT INTO kqz_employee(BrchID,BrchName,EmployeeCode,EmployeeName,gender,ModelNum,Privilege,DevTypeSTR,IsCheck,OnRule,OffRule,CanOvertime,HaveFesta,HavePwd) VALUES (1,'1',@iemployeecode,@iemployeename,2,0,0,'',1,0,0,1,1,0) set @iemployeeid = (select @@identity) END set @icount = (SELECT count(*) FROM KQZ_CARD T1 INNER JOIN KQZ_EMPLOYEE T2 ON T1.EMPLOYEEID = T2.EMPLOYEEID AND T2.EMPLOYEEID = @iemployeeid AND T2.EMPLOYEECODE = @iemployeecode AND CARDTIME = @ircdtime) if(@icount > 0) begin set @isnewrcd = -1 return @isnewrcd end if (@iimagedata IS NOT NULL) BEGIN insert into kqz_Img (ImgPhoto) values (@iimagedata) set @iimgid = (select @@identity) END ELSE BEGIN set @iimgid = 0 END INSERT INTO kqz_Card(EmployeeID,CardTime,CardTypeID,DevID,DevClass,ImgID,ImgStatus,IsValidate,ModifyUser,ModifyType,FaceIDNo) values (@iemployeeid,@ircdtime,@ircdtype,@idevid,@ifrom_check,@iimgid,@iimagestatus,0,0,0,@ifaceidno) set @isnewrcd = (select @@identity) IF(@iismanual = 1) BEGIN set @istrcardid = cast(@isnewrcd as varchar(30)) INSERT INTO KQZ_CARD_OP(OPTYPE,INSERTCONDITION,OPEMPLOYEE) VALUES(1,@istrcardid,@iadminid) set @iopid = (select @@identity) set @ISQLTEXT = N' INSERT INTO KQZ_CARD_OP_DETAILS(OPID,CARDID,EMPLOYEEID,CARDTIME,CARDTYPEID,DEVID,DEVCLASS,CVERIFY,IMGID,IMGSTATUS,ISVALIDATE, FACEIDNO,MODIFYUSER,MODIFYTYPE,MODIFYTIME) SELECT ' + cast(@iopid as varchar(30)) +',CARDID,EMPLOYEEID,CARDTIME,CARDTYPEID,DEVID,DEVCLASS,CVERIFY,IMGID,IMGSTATUS,ISVALIDATE, FACEIDNO,MODIFYUSER,MODIFYTYPE,MODIFYTIME FROM KQZ_CARD WHERE cardid = ' + cast(@istrcardid as varchar(30)) exec (@ISQLTEXT) end return @isnewrcd end

C# 调用存储过程返回值不对,被截取了。求大神指导

存储过程部分: create or replace package body PKG_AGE is procedure AGE(c_result out varchar2) as nsql varchar2(4000); isExist integer; begin --------------------清空表数据-------------- c_result:='执行成功xx'; EXCEPTION WHEN others THEN begin c_result:='错误:'||sqlerrm; --Rollback; dbms_output.put_line(sqlerrm); return; end; end AGE; end PKG_AGE; 代码部分: OracleParameter[] paramlst = new OracleParameter[] { new OracleParameter("c_result", OracleType.VarChar, 4000) }; paramlst[0].Direction = ParameterDirection.Output; dt = PublicClass.GetPrcDataSet("PKG_AGE.AGE", paramlst); logcontent = paramlst[0].Value.ToString(); 输出的内容: 记录消息: logcontent的内容是:'执行成',不是'执行成功xx';

C#调用MySql存储过程报错,请各位帮忙解答一下

public DataSet GetPagerList(string tableName, string primaryKey, string columns, string whereSql, string sortField, int? pageSize, int? currPage, bool isDesc) { MySqlParameter[] param = new MySqlParameter[]{ new MySqlParameter("TableName",tableName), new MySqlParameter("PrimaryKey", primaryKey), new MySqlParameter("Columns1", columns), new MySqlParameter("WhereSql", whereSql), new MySqlParameter("Sort", sortField), new MySqlParameter("pagesize", pageSize), new MySqlParameter("currpage", currPage), new MySqlParameter("IsDesc", isDesc) }; //return MySqlHelper_flag.GetDataSet("sp_GetPageRecord", param, "dataset"); return MySqlHelper_flag.GetDataSet(CommandType.StoredProcedure, "sp_GetPageRecord", "dataset", param); } 这是传的参数。 try { //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数 PrepareCommand(cmd, conn, null, type, cmdText, param); //调用 MySqlCommand 的 ExecuteReader 方法 MySqlDataAdapter adapter = new MySqlDataAdapter(); adapter.SelectCommand = cmd; DataSet ds = new DataSet(); ds.DataSetName = tablename; adapter.Fill(ds); //清除参数 cmd.Parameters.Clear(); conn.Close(); return ds; } 这是调用存储过程的方法。 CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `sp_GetPageRecord`( TableName VARCHAR (500), PrimaryKey VARCHAR (100), columns1 VARCHAR (1000), WhereSql VARCHAR (500), Sort VARCHAR (100), pagesize INT, currpage INT, IsDesc BIT ) 存储过程的参数定义。 然后在navicat里面call存储过程没有任何问题,同样的参数值。可是由系统传过去调存储过程就会报如下错误。 Parameter '?500' not found in the collection. 请各位帮忙解答,感激不尽 困扰好多天了

关于C#调用打印机异常问题

项目介绍:在客户那边有一个平台,是通过web浏览器去访问的,我主要做的就是在客户端提供一个服务程序,然后让他们的平台调用我的服务程序的url来完成各种相关的数据处理。我用的是C#和nancy,做的是控制台的项目,然后用nssm弄成windows服务,服务目前其他各项处理都没问题,除了这个打印的功能。打印的这一块存在问题,我在xamarin和vs里面进行运行或调试的时候打印功能一切正常,但是使用nssm装成windows服务以后就开始报异常,异常的详细信息如下:System.Drawing.Printing.InvalidPrinterException: No printers are installed. at System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal() at System.Drawing.Printing.PrinterSettings.GetHdevmode(PageSettings pageSettings) at System.Drawing.Printing.PrintController.OnStartPrint(PrintDocument document, PrintEventArgs e) at System.Windows.Forms.PrintControllerWithStatusDialog.OnStartPrint(PrintDocument document, PrintEventArgs e) at System.Drawing.Printing.PrintController.Print(PrintDocument document) at System.Drawing.Printing.PrintDocument.Print() at AliAssetTagger.Services.AssetCardService.PrintUserdata(UserData userdata) in c:\Users\glgstwp\Desktop\Gloit\2015-07-28\1.1.0\ali-asset-tagger\ali-asset-tagger\ali-asset-tagger\ali-asset-tagger\Services\AssetCardService.cs:line 105 我的打印部分的代码是 public string Print (UserData userdata) { try{ userdataToPrint = userdata; PrintDocument pd = new PrintDocument (); pd.PrintPage += new PrintPageEventHandler (pd_PrintPage); pd.Print (); //异常指向的就是这一行 } catch(Exception e) { return e.ToString (); } return "打印完成!"; } public void pd_PrintPage (object sender, System.Drawing.Printing.PrintPageEventArgs e) { Console.WriteLine ("打印ing"); try { //通过GDI+绘制打印文档 e.Graphics.DrawString ("广西国税", new Font ("宋体", 8), Brushes.Black, 90, 0); e.Graphics.DrawString ("广西壮族自治区税务厅", new Font ("宋体", 4), Brushes.Black, 90, 12); e.Graphics.DrawLine (new Pen (Color.Black, (float)1.00), 90, 18, 200, 18); e.Graphics.DrawString ("XX市XX县(区)国家税务局", new Font ("宋体", 7), Brushes.Black, 90, 22); e.Graphics.DrawLine (new Pen (Color.Yellow, (float)5.00), 0, 39, 300, 39); e.Graphics.DrawString ("资产编号: " + userdataToPrint.asset_No, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 55); e.Graphics.DrawString ("资产名称: " + userdataToPrint.asset_Name, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 80); e.Graphics.DrawString ("规格型号: " + userdataToPrint.specification_Model, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 105); e.Graphics.DrawString ("使用部门: " + userdataToPrint.department, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 130); e.Graphics.DrawString ("使用人: " + userdataToPrint.responsible, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 155); e.Graphics.DrawString ("购置日期: " + userdataToPrint.purchased_On, new Font ("宋体", 12, FontStyle.Bold), Brushes.Black, 12, 180); Console.WriteLine ("打印结束"); } catch (Exception ex) { MessageBox.Show (ex.ToString ()); } } 我在网上也看到了很多No printers are installed的异常,但是并不是没有安装打印机驱动,在电脑上的打印机和传真那里可以看到很多的打印机和传真,在xamarin studio或者visual studio里面都是正常的,没有异常输出,能够正确打印,但是一装成windows服务就不行,是不是弹窗的原因?我知道nssm装服务的时候有弹窗是不成功不允许的,但是调用打印机的时候怎么做才能不闪出任何打印机相关的窗口呢?我上面的代码已经是直接使用默认的打印机打印了,但是运行的时候还是会有一个窗口在任务栏闪一下,应该是打印机的相关的。请各位帮帮忙,感激不尽!项目很急,我刚毕业,公司没人可以帮到我,万能的网友,拜托了!

c#以unsafe方式调用C++代码会异常吗?

如有一个c++的接口函数:void CppFunc(float* data,int len); C#调用传值采用unsafe -fixed方式,代码如下: public unsafe void CSharpFunc(float[] data) { fixed(float* pData = data) { //这里直接钉住内存,获取指针,主要是因为调用方便。 CppFunc(pData,len); } } 类似如上的代码,前几日出现了AccessViolationexception异常,让我怀疑人生了。 这种方式调用C++会出异常吗?为什么?unsafe有什么大坑吗?谢谢回答

C#调用C程序dll的内存问题

项目需要:实现C#调用C语言写的的算法,该C程序需要封装成dll。C程序本身可以跑通没有任何问题,随即写了一个C#demo来调用该算法。报如下图的错误 ![图片说明](https://img-ask.csdn.net/upload/201801/01/1514778145_545365.png) 由于测试阶段,所以该C程序没有参数接口,所以排除网上一些帖子说的参数类型不匹配的原因。 进入dll内部进行调试,报如下错误 ![图片说明](https://img-ask.csdn.net/upload/201801/01/1514778352_126183.png) 经调试发现是第二块内存continental_47_grid分配失败导致的上图错误,第一块aodgrid分配正常。 ![图片说明](https://img-ask.csdn.net/upload/201801/01/1514778387_739926.png) 但如果手动把分配内存大小调小可以分配成功。如此看来是内存空间不够的问题导致的,但是C程序本身运行没有出现过这样的问题。难道是dll本事有内存限制机制? 卡了很多天了,还望各路大神帮忙看看 一下是C#调用代码: public static class NativeMethod { [DllImport("kernel32.dll", EntryPoint = "LoadLibrary")] public static extern int LoadLibrary( [MarshalAs(UnmanagedType.LPStr)] string lpLibFileName); [DllImport("kernel32.dll", EntryPoint = "GetProcAddress")] public static extern IntPtr GetProcAddress(int hModule, [MarshalAs(UnmanagedType.LPStr)] string lpProcName); [DllImport("kernel32.dll", EntryPoint = "FreeLibrary")] public static extern bool FreeLibrary(int hModule); } static int Main(string[] args) { int hModule = NativeMethod.LoadLibrary("AHI_AOD_noarg.dll"); if (hModule == 0) return 1; IntPtr intPtr = NativeMethod.GetProcAddress(hModule, "AHI"); AHI AHI = (AHI)Marshal.GetDelegateForFunctionPointer(intPtr, typeof(AHI)); AHI(); return 0; } } }

C#按钮执行SQL存储过程

存储过程名字:p_vdp_vendor_jk 执行的存储过程语句:EXEC p_vdp_vendor_jk'90029','02','2017-05-22 10:57:03.513' 语句解释:90029-学生代码 02-无需更改 2017-05-22-需要定到每个月的22日 10:57:03.513 无需更改 现需要在C#窗体程序中执行该存储过程,自动将时间更改为每个月22日,学生代码需要手动填写在textbox中。执行后需要将返回值显示在DataGridView中。 烦请大神指点!

C#调用Delphi dll文件问题

最近手头一个项目,需要用到C#调用Delphi写出的dll文件(调用的是modelDLL.dll,但是该dll文件还需要另外一个borlndmm.dll文件支持,调用的时候已经把这两个dll文件放到debug目录下了),直接附上相关代码: Delphi相关源码: ``` type TCharStr=array[0..599] of char; ``` 用Delphi写的直接调用可运行,代码如下: ``` procedure TMainDLLForm.PedBitBtnClick(Sender: TObject); var fileName:TCharStr; begin OpenDataFileDlg.InitialDir:= GetCurrentDir; OpenDataFileDlg.Title:='加载模型文件'; OpenDataFileDlg.Filter := '定量模型[*.mdl]|*.mdl|定性模型[*.mdr]|*.mdr'; if OpenDataFileDlg.Execute then begin StrPCopy(FileName,OpenDataFileDlg.FileName); tmpD:=NIRSAModelForPred(graphyData,dataLength,FileName,targetName); end; if compareText(fileExt,'.MDR')=0 then begin memo1.Lines.Add('定性模型: '+ExtractFileName(FileName)); memo1.Lines.Add(Format('预测结果: %10s:%0.0f',[targetName,tmpD])); end; memo1.Lines.Add('--------------'); memo1.Lines.Add(trim(NIRSAPretreatInfor(FileName)));//调用该函数 memo1.Lines.Add('--------------'); memo1.Lines.Add(trim(NIRSAModelInfor(FileName))); end; ``` 而我现在用C#调用出现"尝试读取或写入受保护的内存。这通常指示其他内存已损坏"的错误,代码如下所示: ``` [MarshalAs(UnmanagedType.LPStr, SizeConst = 600)] public string fileName; [DllImport(@"modelDLL.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] [return: MarshalAs(UnmanagedType.LPStr, SizeConst = 600)] public static extern string NIRSAPretreatInfor(ref string fileName); private void preCalcButton_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = false; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { fileName = dialog.FileName; string result = NIRSAPretreatInfor(ref fileName); modelInfoTextBox.Text = result; } } ``` 该段代码主要参考Stack Overflow的一些解决方案,地址:[链接](https://stackoverflow.com/questions/5105460/delphi-dll-in-c-sharp-var-array-as-parameter ""),现在解决不了,没有C币了,请大神支支招,谢谢!

C#调用COM组件异常捕获问题

C#使用CDO组件抓取url保存为mht文件;方法如下: private static bool SaveUrlToMht(string htmlUrl, string filePath) { CDO.Message message = new CDO.MessageClass(); CDO.Configuration cfg = new CDO.Configuration(); ADODB.Stream stream = null; string _CharSet = "utf-8"; try { message.Configuration = cfg; message.MDNRequested = false; message.MimeFormatted = true; message.CreateMHTMLBody( htmlUrl, CDO.CdoMHTMLFlags.cdoSuppressNone, null, null ); stream = message.GetStream(); stream.Charset = _CharSet; stream.SaveToFile(filePath, ADODB.SaveOptionsEnum.adSaveCreateOverWrite); message = null; stream.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } return true; } 在抓取某些特定网页时,程序执行到CreateMHTMLBody时直接无提示退出。 代码内无法捕获异常,AppDomain.CurrentDomain.UnhandledException 同样无法捕获。 windows日志有错误信息如下: 错误模块名称: unknown,版本: 0.0.0.0,时间戳: 0x00000000 异常代码: 0xc0000005 错误偏移量: 0x04bd4cb0 错误进程 ID: 0x2920 错误应用程序启动时间: 0x01cfff36dd27cfaf 请教解决办法或原因。

c#.net 调用oracle存储过程,不能正常回滚

本人是个小菜,刚接触.net不久,使用事务不熟练,导致回滚失败。下面是代码: enter code here using (OracleConnection conn = new OracleConnection(strConn)) { if (conn.State != ConnectionState.Open) { conn.Open(); } OracleCommand cmd = conn.CreateCommand(); OracleTransaction ot = conn.BeginTransaction(IsolationLevel.ReadCommitted); cmd.Connection = conn; cmd.Transaction = ot; //cmd.Transaction = ot; //OracleTransaction ot = conn.BeginTransaction(); try { foreach (XmlNode node in itemNodes) { rcptGroupId = Convert.ToString(node.SelectSingleNode("RcptGroupID").InnerText); amt = node.SelectSingleNode("Price").InnerText; OracleParameter[] pm = new OracleParameter[14]; pm[0] = new OracleParameter("cardno", OracleType.VarChar, 20); pm[0].Direction = ParameterDirection.Input; pm[0].Value = cardNo; pm[1] = new OracleParameter("rcptgroupid", OracleType.VarChar, 100); pm[1].Direction = ParameterDirection.Input; pm[1].Value = rcptGroupId; pm[2] = new OracleParameter("amt", OracleType.Number); pm[2].Direction = ParameterDirection.Input; pm[2].Value = float.Parse(amt); pm[3] = new OracleParameter("secrityno", OracleType.VarChar, 32); pm[3].Direction = ParameterDirection.Input; pm[3].Value = secrityNo; pm[4] = new OracleParameter("cardserno", OracleType.VarChar, 32); pm[4].Direction = ParameterDirection.Input; pm[4].Value = cardSerNo; pm[5] = new OracleParameter("userid", OracleType.VarChar, 4); pm[5].Direction = ParameterDirection.Input; pm[5].Value = userID; pm[6] = new OracleParameter("rcptno", OracleType.VarChar, 20); pm[6].Direction = ParameterDirection.Output; pm[7] = new OracleParameter("resultcode", OracleType.Int16); pm[7].Direction = ParameterDirection.Output; pm[8] = new OracleParameter("errormsg", OracleType.VarChar, 200); pm[8].Direction = ParameterDirection.Output; //add 2013.8.1 pm[9] = new OracleParameter("Bank", OracleType.VarChar, 20); pm[9].Direction = ParameterDirection.Input; pm[9].Value = bank; pm[10] = new OracleParameter("BankNo", OracleType.VarChar, 20); pm[10].Direction = ParameterDirection.Input; pm[10].Value = bankno; pm[11] = new OracleParameter("TransMoney", OracleType.VarChar, 10); pm[11].Direction = ParameterDirection.Input; pm[11].Value = decimal.Parse(TransMoney); pm[12] = new OracleParameter("CashTraceNo", OracleType.VarChar, 30); pm[12].Direction = ParameterDirection.Input; pm[12].Value = CashTraceNo; pm[13] = new OracleParameter("TerminalId", OracleType.VarChar, 16); pm[13].Direction = ParameterDirection.Input; pm[13].Value = TerminalId; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "pkg_autobillservice.proc_autoopbillcharge2"; cmd.Parameters.AddRange(pm); cmd.ExecuteNonQuery(); rcptNoList.Add(Convert.ToString(pm[6].Value)); } ot.Commit(); } catch (Exception ex) { ot.Rollback(); return string.Format(result, "1", ex.Message, "", rcptGroupId); } finally { cmd.Dispose(); ot.Dispose(); } } 调用存储过程,第一次错误了能回滚,再执行一次到cmd.ExecuteNonQuery()数据就已经提交了。 这样写在循环第二次的时候还会报错,错误为:System.Data.OracleClient.OracleExceptionMessage=ORA-06550: 第 1 行, 第 7 列: PLS-00703: 列表中具有指定参数的多个实例。 一天了还是没有法解决,求大家帮忙看下。

c#调用oracle存储过程报错(菜鸟求救,客户催着)

另一个项目组提供了如下存储过程 P16080faf11. get_brwpcno_wrbrwamtamt (p_co varchar2, --公司 p_wtmen varchar2, --領款人 ref_cursor out sys_refcursor) ;--返回的借支编号和金额结果集 我最终想在sqlserver中存储过程中调用此存储过程,于是我先在控制台运行,结果报错误![![图片说明](https://img-ask.csdn.net/upload/201612/15/1481765015_982100.png)图片说明](https://img-ask.csdn.net/upload/201612/15/1481765005_614156.png) _另外,有大神能指导下,在sqlserver存储过程中怎么调用此过程,感激不尽啊_

关于ASP.NET 调用存储过程传参数的问题

/// <summary> /// 执行存储过程 /// </summary> /// <param name="storedProcName">存储过程名</param> /// <param name="parameters">存储过程参数</param> /// <returns>SqlDataReader</returns> public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters) { SqlConnection connection = OpenSqlConnection(); SqlCommand command = new SqlCommand(); try { command.CommandText = storedProcName; command.Connection = connection; if (parameters != null) { foreach (IDataParameter parm in parameters) { command.Parameters.Add(parm); } } command.CommandType = CommandType.StoredProcedure; if (connection.State != ConnectionState.Open) { connection.Open(); } SqlDataReader returnReader = command.ExecuteReader(CommandBehavior.CloseConnection); command.Parameters.Clear(); return returnReader; } catch (Exception e) { //e.Message; connection.Close(); throw; } } 以上是我写的调用存储过程的方法 如我我页面上要调用存储过程去执行一个参数为1的操作 该怎么传这个参数呢

这个postgreSql存储过程如何从C#取得结果集

-- FUNCTION: hsggjyk_dev.getnewsinfo(numeric, character varying, numeric, numeric, refcursor) -- DROP FUNCTION hsggjyk_dev.getnewsinfo(numeric, character varying, numeric, numeric, refcursor); CREATE OR REPLACE FUNCTION hsggjyk_dev.getnewsinfo( plx numeric, pdq character varying, ym numeric, myhs numeric, INOUT pcursor refcursor, OUT _retval_ refcursor) RETURNS record LANGUAGE 'edbspl' COST 100.0 VOLATILE NOT LEAKPROOF AS $function$ v_StartIndex number; v_EndIndext number; begin v_StartIndex:=(YM-1)*MYHS+1; --分页开始行 v_EndIndext:=YM*MYHS; --分页结束行 if pLX is not null then open pCURSOR for select ID,BT,FMLJ,XWLJ,GJZ,FBSJ,ZYCD from ( select rownum as rown,ID,BT,FMLJ,XWLJ,GJZ,FBSJ,ZYCD from "hsggjyk_dev"."newsinfo" where lx=pLX and nvl(dq,'111')=coalesce(pDQ,dq,'111') and rownum<=v_EndIndext) where rown>=v_StartIndex; end if; end $function$; ALTER FUNCTION hsggjyk_dev.getnewsinfo(numeric, character varying, numeric, numeric, refcursor) OWNER TO ggjy_mg_usr;

C#程序调用SQL SERVER存储过程的output参数始终为空,求助?

C#中的如下两条语句调用存储过程output参数始终为空(dataGridView1能正确调用到想要的select数据,但是存储过程的两个输出参数值不能传递给两个texBox.Text),不知为何? textBox1.Text = parameters[2].Value.ToString(); textBox2.Text = nowpage + "/" + parameters[3].Value.ToString(); 存储过程代码: ``` USE [tushu] GO /****** Object: StoredProcedure [dbo].[fenye] Script Date: 12/05/2015 11:03:20 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[fenye] @pagenow int, @pagesize int, @countrow int output, @countpage int output AS IF(@pagesize=10) BEGIN declare @startRow int, @endRow int set @startRow = (@pagenow - 1) * @pagesize +1 set @endRow = @startRow + @pagesize -1 select checkbox,id,shuming,zuozhe,xueduan,nianji,beizhu from book where id between @startRow and @endRow order by id desc select @countrow=count(*) from book SET @countpage=(@countrow/@pagesize)+1 END ``` C#代码片段: ``` private void chaxun_Click(object sender, EventArgs e) { //查询条件默认 xueduan.SelectedIndex = 0; nianji.SelectedIndex = 0; hangshu.SelectedIndex = 0;//每页行数,默认10条每页 //tiaopage.Text = ""; //数据统计 //int counthang = 0; //int countpage = 0; int nowpage = 1; int sizepage = 10; int tiaopage = int.Parse(tiaozhuan.Text.Trim()); string xueDuan = xueduan.Text; string nianJi = nianji.Text; string shuMing = shuming.Text.Trim();//自动剔除收尾空格 string condatabase = ConfigurationManager.ConnectionStrings["mysql"].ConnectionString; string sql = "exec fenye @pagenow,@pagesize,NULL,NULL";//@countrow,@countpage SqlConnection conn = new SqlConnection(condatabase); dataGridView1.Rows.Clear(); try { SqlCommand cmmd = new SqlCommand(sql, conn);//执行SQL查询 // 创建参数 IDataParameter[] parameters = { new SqlParameter("@pagenow", SqlDbType.Int) , new SqlParameter("@pagesize", SqlDbType.Int) , new SqlParameter("@countrow", SqlDbType.Int) , new SqlParameter("@countpage", SqlDbType.Int) }; // 设置参数类型 parameters[0].Value = nowpage; parameters[1].Value = sizepage; // 设置为输出参数 parameters[2].Direction = ParameterDirection.Output; //设置为输出参数 parameters[3].Direction = ParameterDirection.Output; // 添加参数 cmmd.Parameters.Add(parameters[0]); cmmd.Parameters.Add(parameters[1]); cmmd.Parameters.Add(parameters[2]); cmmd.Parameters.Add(parameters[3]); conn.Open(); System.Data.DataTable dt = new System.Data.DataTable(); SqlDataAdapter da = new SqlDataAdapter(cmmd); da.Fill(dt); for (int i = 0; i < dt.Rows.Count; i++) { this.dataGridView1.Rows.Add(dt.Rows[i][0], dt.Rows[i][1], dt.Rows[i][2], dt.Rows[i][3], dt.Rows[i][4], dt.Rows[i][5], dt.Rows[i][6]); } if (dataGridView1.RowCount != 0) { dataGridView1.Rows[0].Cells[0].Selected = false;//设置列表首行默认不选中 } textBox1.Text = parameters[2].Value.ToString(); textBox2.Text = nowpage + "/" + parameters[3].Value.ToString(); } catch (Exception yichang) { MessageBox.Show(yichang.Message); } finally { conn.Close();//关闭数据库连接 } } ```

C# 反射添加事件时报“调用的目标发生了异常

反射调用方法、属性都正常,唯独在添加事件这块上报错,用AddEventHandler添加事件马上报错,求大神给个解决方案![图片说明](https://img-ask.csdn.net/upload/201708/01/1501596858_255539.jpg)

c# 封装dbhelper中的存储过程执行,如何比较好的返回结果和out参数的值

我现在想到的是建3个类 ``` //返回cmd.ExecuteNonQuery();的存储过程执行结果 class1{ int returnnum; dic outputdic; } //返回cmd.ExecuteScalar();的存储过程执行结果 class2{ object returnobject; dic outputdic; } //返回cmd.ExecuteQuery();的存储过程执行结果 class2{ datatable returndatatable; dic outputdic; } ``` 有没有什么好的方法优雅的解决这个问题

请教一个关于c++DLL供C#调用的代码,是否会出现内存泄漏的问题

``` const char* __stdcall abc(const char* data) { int size = strlen(data); string s = ""; for (int i = 0; i < size; i++) { s += data[i]; } return s.c_str(); } ``` 本人做c#,现在需要用c++实现一些内容,传入参数和返回参数都是指针,在c++的DLL中,定义了一些变量,在C#中我通过Intptr来获取返回值,上面的函数模拟了大概的内容,对c++中内存泄漏问题没有经验,这样在c#调用,会造成内容泄漏问题么,c#中的Intptr是不需要释放的吧

c# httpclient调用webapi获取json数据

![图片说明](https://img-ask.csdn.net/upload/201901/05/1546678801_709868.png) 我想通过httpclient调用某个webapi地址然后获取图中的数据

C#用OLEDB方式调用存储过程返回DataSet结果集,怎么用?

C#用OLEDB方式调用存储过程返回DataSet结果集,怎么用?

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Linux 会成为主流桌面操作系统吗?

整理 |屠敏出品 | CSDN(ID:CSDNnews)2020 年 1 月 14 日,微软正式停止了 Windows 7 系统的扩展支持,这意味着服役十年的 Windows 7,属于...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

学习总结之HTML5剑指前端(建议收藏,图文并茂)

前言学习《HTML5与CSS3权威指南》这本书很不错,学完之后我颇有感触,觉得web的世界开明了许多。这本书是需要有一定基础的web前端开发工程师。这本书主要学习HTML5和css3,看...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

冒泡排序动画(基于python pygame实现)

本项目效果初始截图如下 动画见本人b站投稿:https://www.bilibili.com/video/av95491382 本项目对应github地址:https://github.com/BigShuang python版本:3.6,pygame版本:1.9.3。(python版本一致应该就没什么问题) 样例gif如下 ======================= 大爽歌作,mad

Redis核心原理与应用实践

Redis核心原理与应用实践 在很多场景下都会使用Redis,但是到了深层次的时候就了解的不是那么深刻,以至于在面试的时候经常会遇到卡壳的现象,学习知识要做到系统和深入,不要把Redis想象的过于复杂,和Mysql一样,是个读取数据的软件。 有一个理解是Redis是key value缓存服务器,更多的优点在于对value的操作更加丰富。 安装 yum install redis #yum安装 b...

现代的 “Hello, World”,可不仅仅是几行代码而已

作者 |Charles R. Martin译者 | 弯月,责编 | 夕颜头图 |付费下载自视觉中国出品 | CSDN(ID:CSDNnews)新手...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

立即提问
相关内容推荐