1.配置文件:
<connectionStrings>
<add name="constr" connectionString="data source=127.0.0.1;initial catalog=test;user id=sa;password=123"/>
</connectionStrings>
2.代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string constr = System.Configuration.ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con =new SqlConnection(constr))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = con;
cmd.Parameters.Add("@in_str", System.Data.SqlDbType.VarChar);
cmd.Parameters.Add("@out_str", System.Data.SqlDbType.NVarChar);
cmd.Parameters["@out_str"].Direction = System.Data.ParameterDirection.Output;
cmd.CommandText = "sp_test";
cmd.Parameters["@in_str"].Value = "input str";
cmd.Parameters["@out_str"].Value = "";
cmd.Parameters["@in_str"].Size =20;//此处如果没有赋值,那么就会按照最初给的值的大小来进行指定
cmd.Parameters["@out_str"].Size = 200;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
System.Data.DataTable dt = new System.Data.DataTable("table_name");
sda.Fill(dt);
Console.WriteLine("@in_st----{0}", cmd.Parameters["@in_str"]);
Console.WriteLine("@out_str---{0}", cmd.Parameters["@out_str"]);
if (dt!=null && dt.Rows.Count >0)
{
foreach (System.Data.DataRow item in dt.Rows)
{
string msg = string.Empty;
for (int i = 0; i < dt.Columns.Count; i++)
{
msg = msg + "---" + item[i].ToString();
}
Console.WriteLine(msg);
}
}
Console.ReadKey();
}
}
}
}
3.存储过程:
create PROCEDURE sp_test
@in_str VARCHAR(20),
@out_str NVARCHAR(200) OUTPUT
AS
BEGIN
BEGIN TRY
SET @in_str ='wo shi instr';
SET @out_str ='wo shi out_str'
IF not EXISTS(SELECT * FROM sys.objects WHERE type='U' AND name ='test_table')
BEGIN
CREATE TABLE test_table
(
id INT IDENTITY(1,1),
emp_no VARCHAR(20),
emp_name NVARCHAR(50)
)
DECLARE @index INT
SET @index =1;
--SELECT RAND(1)
WHILE(@index <50)
BEGIN
INSERT INTO dbo.test_table
( emp_no, emp_name )
VALUES (
CEILING(RAND()*100), -- emp_no - varchar(20) 1--100
FLOOR(RAND()*100) -- emp_name - nvarchar(50) 0--99
)
SET @index +=1;
END
END
SELECT * FROM dbo.test_table
END TRY
BEGIN CATCH
SET @out_str ='exception'+ERROR_MESSAGE();
PRINT @out_str
END CATCH
END