- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章C# 中用 Sqlparameter 的两种用法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
新建一个表:
1
2
3
4
5
6
7
8
|
create table abc
(
id
int
IDENTITY(1,1) NOT NULL,
name nvarchar(100) ,
sex nvarchar(10)
)
insert into abc values(‘asf
','
男')
insert into abc values(‘ai
','
女')
|
创建表格完成.
新建一个存储过程:
1
2
3
4
5
6
7
|
create procedure selbyid
(
@id
int
,
@thename nvarchar(100) output
)
as
select @thename= name from abc where id=@id
|
在执行的过程中可以用sqlparameter 的几种格式来调用存储过程:
第一种是:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public
string
connString = ConfigurationManager.ConnectionStrings[
"connStr"
].ConnectionString;
//存储链接字符串,方便资源复用。
public
SqlConnection getcon( )
{
SqlConnection conn =
new
SqlConnection();
conn.ConnectionString = connString;
return
conn;
}
private
void
btnsqlparauseing_Click(
object
sender, EventArgs e)
{
SqlConnection con = getcon();
con.Open();
string
sqlstr =
"insert into abc values(@name,@sex)"
;
//免除sql注入攻击
SqlCommand cmd =
new
SqlCommand( );
cmd.Connection = con;
cmd.CommandText = sqlstr;
SqlParameter para =
new
SqlParameter();
//声明参数
para=
new
SqlParameter(
"@name"
, SqlDbType.NVarChar,100);
//生成一个名字为@Id的参数,必须以@开头表示是添加的参数,并设置其类型长度,类型长度与数据库中对应字段相同,但是不能超出数据库字段大小的范围,否则报错。
para.Value = txtname.Text.ToString().Trim();
//这个是输入参数,所以可以赋值。
cmd.Parameters.Add(para);
//参数增加到cmd中。
para =
new
SqlParameter(
"@sex"
, SqlDbType.NVarChar, 10);
para.Value = txtsex.Text.ToString().Trim();
cmd.Parameters.Add(para);
int
i =cmd.ExecuteNonQuery();
//执行sql语句,并且返回影响的行数。
MessageBox.Show(i.ToString() +
"命令完成行受影响插入成功"
,
"提示"
,MessageBoxButtons.OK,MessageBoxIcon.Information);
con.Close();
}
|
2.第二种是调用sqlparameter几种方式来调用存储过程:
1. 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
private
void
btnshuchu_Click(
object
sender, EventArgs e)
{
SqlConnection con = getcon();
con.Open();
SqlCommand cmd =
new
SqlCommand();
cmd.Connection = con;
cmd.CommandText =
"selbyid"
;
//存储过程的名称
cmd.CommandType = CommandType.StoredProcedure;
//说明是存储过程
SqlParameter para =
new
SqlParameter();
//声明sqlparameter参数
para =
new
SqlParameter(
"@id"
, SqlDbType.Int);
//这个参数是输入参数
para.Value =
int
.Parse(txtid.Text.ToString().Trim());
//因为是输入参数所以可以赋值
cmd.Parameters.Add(para);
//加入cmd中
para=
new
SqlParameter(
"@thename"
,SqlDbType.NVarChar,100);
//参数的大小可以小于数据库的参数规定值,但不能够大于数据库的参数大小。
cmd.Parameters.Add(para);
//和下面一句不可掉乱,先增加再指明它是输出参数来的。
cmd.Parameters[
"@thename"
].Direction = ParameterDirection.Output;
//增加后,用output说明是输出参数。
int
i=cmd.ExecuteNonQuery();
string
name = cmd.Parameters[
"@thename"
].Value.ToString();
//经过执行,存储过程返回了输出参数。
MessageBox.Show(
"命令完成 "
+ name +
"是所查记录"
,
"提示"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
con.Close();
}
|
套路就是: 输出参数先声明,再赋值,再加入cmd的参数中,最后用cmd.ExecuteNonQuery()执行.
2.用AddWithValue:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
private
void
btnothers_Click(
object
sender, EventArgs e)
{
SqlConnection con = getcon();
SqlCommand cmd =
new
SqlCommand();
cmd.Connection = con;
cmd.CommandText =
"selbyid"
;
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter para =
new
SqlParameter();
cmd.Parameters.AddWithValue(
"@id"
, Convert.ToInt32(txtid.Text.Trim()));
//输入参数可以用addWithValue来格式化参数,但输出参数只能用Add
cmd.Parameters.Add(
"@thename"
, SqlDbType.NVarChar,100).Direction = ParameterDirection.Output;
//和下面一句不可顺序掉乱,否则会报错,先加入cmd中再指明它是输出参数来的。
con.Open();
int
i = cmd.ExecuteNonQuery();
string
name = cmd.Parameters[
"@thename"
].Value.ToString();
//输出参数返回一个数值。
MessageBox.Show(
"命令完成 "
+ name +
"是所查记录"
,
"提示"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
con.Close();
}
|
3.用参数数组实现调用输入和输出参数的存储过程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
private
void
btnshuzu_Click(
object
sender, EventArgs e)
{
SqlConnection con = getcon();
SqlCommand cmd =
new
SqlCommand();
cmd.Connection = con;
cmd.CommandText =
"selbyid"
;
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter[] para = {
new
SqlParameter(
"@id"
, SqlDbType.Int)};
para[0].Value = Convert.ToInt32(txtid.Text.ToString().Trim());
cmd.Parameters.AddRange(para);
//输入参数和输出参数分别加入到cmd.Parameter中。
cmd.Parameters.Add(
"@thename"
,SqlDbType.NVarChar,100).Direction = ParameterDirection.Output;
//和下面一句不可掉乱,先增加再指明它是输出参数来的。
con.Open();
int
i = cmd.ExecuteNonQuery();
string
name = cmd.Parameters[
"@thename"
].Value.ToString();
MessageBox.Show(
"命令完成 "
+ name +
"是所查记录"
,
"提示"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
con.Close();
}
|
总结 。
以上所述是小编给大家介绍的C# 中用 Sqlparameter 的两种用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
原文链接:http://www.cnblogs.com/simple-article/p/9574506.html 。
最后此篇关于C# 中用 Sqlparameter 的两种用法的文章就讲到这里了,如果你想了解更多关于C# 中用 Sqlparameter 的两种用法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试使用这些命名空间之一 //using Microsoft.Data.SqlClient; using System.Data.SqlClient; 我的模型 public class Get
我将我的项目从 ASP.NET Core 2.2 迁移到 ASP.NET Core 3.0。现在我得到了这个异常(exception)。在 ASP.NET Core 2.2 中,它使用 FromSql
我想知道如何SqlParameter知道没有指定的类型吗? 例如,在实例化参数对象时,您不需要指定 DB 类型。以某种方式执行命令时,.net 会为您处理此问题。在幕后是否有某种转换正在发生?当你做/
我们有一个代码块,它创建一个 sqlParameters 列表,然后将它们传递给存储过程。要求根据输入文本框是否为空有条件地使一些值无效。 基本代码: var SqlParams = new List
如何设置SqlParameter的值相当于 SQL INSERT 语句的 DEFAULT 关键字? MSDN documentation表示“使用 null 或不设置 Value 以使用参数的默认值。
如何设置SqlParameter的值相当于 SQL INSERT 语句的 DEFAULT 关键字? MSDN documentation表示“使用 null 或不设置 Value 以使用参数的默认值。
我想从我的代码中删除手动转义。而不是这个,我想使用 SqlParameter 对象。 foreach (ThreadPost post in ThreadPosts) { string ne
Sql命令构建 我已经构建了如下的 Sql 命令: string _InsertVehicleQuery = "INSERT INTO VSI_VehicleRecords(StockNumb
SqlParameter[] _parameters = { new SqlParameter( "@IDNumber", Person.IDNumber ),
给定以下代码行: cmd.Parameters.Add(new SqlParameter("@displayId", SqlDbType.NVarChar).Value = customer.Disp
我正在尝试访问一个存储过程,但我收到一条错误消息: Procedure or function 'getbug' expects parameter '@bugID', which was not s
我需要检查 SqlParameter 对象的值并根据特殊标签更改它。即:[BB] ==> 棒球,[FP] ==> 快投。 我可以用这样的附加函数来做到这一点: _params.Add(new SqlP
我正在尝试转换: command.Parameters.Add (new SqliteParameter (DbType.Int32) { Value = id }); 到一个普通的 SqlParam
我有一个网络服务,所以处理程序一直被同时调用多次。 我在里面创建了 SqlConnection 和 SqlCommand。我必须执行大约 7 个不同的命令。不同的命令需要不同的参数,所以我只添加一次:
我收到这个错误: System.Data.SqlClient.SqlException: 'The parameterized query '(@inputKarakterSoort varchar(
我有一个 SqlCommand我想打电话Prepare()在谁的CommandType = Text (它 不能 是一个存储过程)。 为了做到这一点,我需要设置 Size参数上的属性非零,否则抛出异常
这个问题已经有答案了: SQL Server error "Procedure expects parameter" (1 个回答) 已关闭 8 年前。 我正在尝试从 C# 程序访问存储过程,令人难以
我正在使用最新版本的 MiniProfiler,一切都已按我的预期设置和工作。我唯一的问题是 SqlParameters 没有显示。 例如,我正在运行一个存储过程:- var cmd = dbcon.
我有一个 SqlCommand,它运行一个包含两个整数输出参数的存储过程。就在 SqlCommand 运行之前,我可以看到输出参数设置为正确的值,但是当命令实际执行时,它对参数 1 使用 NULL,对
我正在开发一个必须支持多种语言的应用程序。为了解决特殊字符问题,我在文本字段中使用了 NVarhcar。所以我对文本字段的 SQL 查询是 insert into tbl_text(text)valu
我是一名优秀的程序员,十分优秀!