webForumDet fria alternativet

DAL och SP

2 svar · 356 visningar · startad av MagnusJ

MagnusJMedlem sedan apr. 2004150 inlägg
#1

Jag sökte lite information om SQL server och SP och då hittade jag den här tråden:
http://www.webforum.nu/showthread.php?s=&forumid=191&threadid=111557

Jag håller nu på bygga på en mindre DAL eller vad man ska kalla det. Och jag har några funderingar.

		//Settings
		//===============================
		public static string myConnString = ConfigurationSettings.AppSettings["ConnString"];
		public static SqlConnection objConnection = CreateConnection();

		private static SqlConnection CreateConnection() 
		{
			SqlConnection myConnection = new SqlConnection(myConnString);
			return myConnection;
		}

		private SqlCommand BuildCommand(string StoredProcName, IDataParameter[] Parameters) 
		{
			SqlCommand myCommand = new SqlCommand(StoredProcName, Parameters, objConnection);
			return myCommand;
		}

		protected int InsSqlQuery(string StoredProcName, IDataParameter[] Parameters)
		{			
			try
			{	
				objConnection.Open();
				SqlCommand Command = BuildCommand(StoredProcName,Parameters);
				Command.Parameters.Add(new SqlParameter("SCOPE_IDENTITY()", SqlDbType.Int, 4, ParameterDirection.Output, false, 0, 0, string.Empty, DataRowVersion.Default, null));
				Command.ExecuteNonQuery();
				return ((int)Command.Parameters["SCOPE_IDENTITY()"].Value);
			}
			finally
			{
				objConnection.Close();
			}
		}

Jag undrar över hur man ska göra BuildCommand för att få det att fungera.

Sedan undrar jag om det finns någon artikel eller om nån stored procedure, lite grundläggande sådär. Som förklarar om hur man ska bygga upp dem.

ALTER PROCEDURE webdns.sp_AddProfile
	@belongsto int,
	@name nvarchar(30),
    @identity int output
AS
		INSERT INTO Profiles ([Name],BelongsTo) VALUES(@name,@belongsto)
		Set @identity = @@identity

webdns vad är det namnet på?

erkaMedlem sedan dec. 19996 522 inlägg
#2

Här har du en rätt ok artikeln om dal & sp

http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=3

SPs, vad vill du veta :) De har ett returvärde, kan ha input och outputparametrar. Du skriver dem i t-sql, som är proceduerellt (hur det nu stavas).

I fallet ovan är webdns namnet på databasanvändaren som är ägaren/skaparen av spn

MagnusJMedlem sedan apr. 2004150 inlägg
#3

Jag undrar lite över om hur man skriver dem :) Som du nämner att man skriver dem i t-sql, vet du någon artikel som beskriver lite hur man ska skriva de olika kommadona? :)

Sedan är det ju det här problemet :)

		private SqlCommand BuildCommand(string StoredProcName, IDataParameter[] Parameters) 
		{
			SqlCommand myCommand = new SqlCommand(StoredProcName, Parameters, objConnection);
			return myCommand;
		}

Får dom här felmeddelandena

Argument '2': cannot convert from 'System.Data.IDataParameter[]' to 'System.Data.SqlClient.SqlConnection'

Argument '3': cannot convert from 'System.Data.SqlClient.SqlConnection' to 'System.Data.SqlClient.SqlTransaction'

The best overloaded method match for 'System.Data.SqlClient.SqlCommand.SqlCommand(string, System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlTransaction)' has some invalid arguments

130 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)