求高手帮忙! C# 调用 储存过程

lgw3596 2011-01-14 10:30:53
private void btnOK_Click(object sender, EventArgs e)
{
string strConn = "server=.;database=book;uid=sa;pwd=startnow;";
SqlConnection sqlconn = new SqlConnection(strConn);

sqlconn.Open();

SqlCommand sqlcmd = new SqlCommand("proc_ULogin",sqlconn);
sqlcmd.CommandType = CommandType.StoredProcedure;


SqlParameter para = new SqlParameter("@uanme",SqlDbType.NVarChar);
para.Direction = ParameterDirection.Input;
para.Value = this.txtUname.Text;
para.Size = 30;

sqlcmd.Parameters.Add(para);

SqlParameter para1 = new SqlParameter("@str", SqlDbType.NVarChar);
para1.Direction = ParameterDirection.Output;
para1.Size = 30;

sqlcmd.Parameters.Add(para1);


sqlcmd.ExecuteNonQuery();

MessageBox.Show(string.Format("{0}",para1.Value));

}
}

为什么提示 过程或函数 'proc_ULogin' 需要参数 '@uname',但未提供该参数 !! 帮帮! 在线等!!!
...全文
64 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mickey_Lemon 2011-01-14
  • 打赏
  • 举报
回复
服务器上面没有Microsoft Excel应用程序这个。我就是找不到。
yyg_pl 2011-01-14
  • 打赏
  • 举报
回复
用法:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;
using System.Data.OleDb;
using System.Collections;
using System.IO;
前三个为传入的值, 最后一个为传出的值
OleDbParameter[] px = new OleDbParameter[4]
{ new OleDbParameter("传入参数1", OleDbType.VarChar, 10, ParameterDirection.Input, false, byte.MaxValue, byte.MaxValue, "传入参数1", DataRowVersion.Default, "传入值1"),
new OleDbParameter("传入参数2", OleDbType.VarChar, 10, ParameterDirection.Input, false, byte.MaxValue, byte.MaxValue, "传入参数2", DataRowVersion.Default, "传入值2"),
new OleDbParameter("传入参数3", OleDbType.VarChar, 10, ParameterDirection.Input, false, byte.MaxValue, byte.MaxValue, "传入参数3", DataRowVersion.Default, "传入值3"),
new OleDbParameter("传出参数1", OleDbType.VarChar, 100, ParameterDirection.ReturnValue, false, byte.MaxValue, byte.MaxValue, "传出参数1", DataRowVersion.Default, "")
};
StoreProcedure sp = new StoreProcedure("provider = MSDAORA.1 ;Data Source= 数据库连接字符串; Password= 密码; User ID= 用户;Unicode=True");
this.dataGridView1.DataSource = sp.ExecStorage("存储过程名称", px);


类:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;
using System.Data.OleDb;
using System.Collections;
using System.IO;

namespace ddddddd
{

public class StoreProcedure
{
private OleDbConnection _OleDbConnection = new OleDbConnection();
private string _connstring = null;
private string _SpName = null;
private OleDbParameter[] _OleDbParameter = null;

public StoreProcedure(string v_ocn)
{
_connstring = v_ocn;
}


public OleDbParameter[] ExecStorage(string sp_name, OleDbParameter[] v_opr)
{
_OleDbParameter = v_opr;
_SpName = sp_name;
_OleDbConnection.ConnectionString = _connstring;
_OleDbConnection.Open();
OleDbCommand _OleDbCommand = new OleDbCommand(_SpName, _OleDbConnection);
_OleDbCommand.CommandType = CommandType.StoredProcedure;


for (int i = 0; i < _OleDbParameter.Length; i++)
{
_OleDbCommand.Parameters.Add(_OleDbParameter[i]);

}
_OleDbCommand.ExecuteNonQuery();
_OleDbConnection.Close();
return _OleDbParameter;

}


}

}
  • 打赏
  • 举报
回复
SqlParameter para = new SqlParameter("@uanme",SqlDbType.NVarChar);
过程或函数 'proc_ULogin' 需要参数 '@uname',
TimZhuFaith 2011-01-14
  • 打赏
  • 举报
回复
两个参数不一样,当然不对了。。。
SqlParameter para = new SqlParameter("@uanme",SqlDbType.NVarChar);
你要的是@uname
_三皮_ 2011-01-14
  • 打赏
  • 举报
回复
是不是过程的参数类型和程序的参数类型不符
Mickey_Lemon 2011-01-14
  • 打赏
  • 举报
回复
你的存储过程有这个参数名吗?
xixihaha_2011_098 2011-01-14
  • 打赏
  • 举报
回复

public static bool ExecuteSQLFile(String sqlFileName,String connStr)
{
FileStream stream = new FileStream(sqlFileName, FileMode.Open);
SqlConnection connecction = null;
bool runflag = false;//判断折行文件是否执行成功
try
{
connecction = new SqlConnection(connStr);
SqlCommand command = connecction.CreateCommand();
connecction.Open();

StreamReader reader = new StreamReader(stream);
StringBuilder builder = new StringBuilder();
SqlTransaction varTrans = connecction.BeginTransaction();
command.Transaction = varTrans;
String strLine = "";
try
{
while ((strLine = reader.ReadLine()) != null)
{
if (strLine.Trim().ToUpper() != @"GO")
{
builder.AppendLine(strLine);
}
else
{
command.CommandText = builder.ToString();
command.ExecuteNonQuery();
builder.Remove(0, builder.Length);
}
}
varTrans.Commit();
runflag = true;
}
catch (Exception ce)
{
varTrans.Rollback();
throw ce;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (connecction != null && connecction.State != ConnectionState.Closed)
{
stream.Close();
connecction.Close();
}
}
return runflag;
}
_三皮_ 2011-01-14
  • 打赏
  • 举报
回复
有啥问题,还是告诉我们好的方法?

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧