Hallo, in C# .net probeer ik een afbeelding binair in de database op te slaan, dit gaat goed met onderstaande code
btImage is een byte[]
doe ik hetzelfde via een stored procedure dan krijg ik het niet voor elkaar
de stored procedure
het opslaan gaat prima, geen foutmeldingen bij beide methoden echter als ik vervolgens probeer de afbeelding te bekijken, krijg ik bij de eerste methode netjes mijn afbeelding maar bij mijn twee methode onderstaande melding:
?!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
wie kan mij verder helpen?
btImage is een byte[]
code:
1
2
3
4
5
6
7
8
9
10
11
12
| SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"].ToString());
String sqlString = "INSERT INTO Afbeelding(filename, filecol)"
+ " VALUES (@filename, @filecol)";
SqlCommand UC = new SqlCommand(sqlString);
UC.Parameters.Add("@filename", SqlDbType.VarChar, 50).Value = file.PostedFile.FileName.ToString();
UC.Parameters.Add("@filecol", SqlDbType.Binary).Value = btImage;
UC.Connection = conn;
conn.Open();
UC.ExecuteNonQuery();
conn.Close(); |
doe ik hetzelfde via een stored procedure dan krijg ik het niet voor elkaar
code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| public Int32 saveAfbeelding(String filename, byte[] filecol, Int32 size)
{
Int32 errorCode = -1;
Int32 afbeeldingID = -1;
Int32 rowsAffected;
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"].ToString());
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "dbo.ldn_SaveAfbeelding";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
try
{
SqlParameter PA;
PA = new SqlParameter("@filename", SqlDbType.VarChar, 255);
PA.Value = filename;
cmd.Parameters.Add(PA);
PA = new SqlParameter("@filecol", SqlDbType.Binary, size);
PA.Value = filecol;
cmd.Parameters.Add(PA);
PA = new SqlParameter("@size", SqlDbType.Int);
PA.Value = size;
cmd.Parameters.Add(PA);
PA = new SqlParameter("@afbeeldingID", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, afbeeldingID);
cmd.Parameters.Add(PA);
PA = new SqlParameter("@errorCode", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, errorCode);
cmd.Parameters.Add(PA);
conn.Open();
rowsAffected = cmd.ExecuteNonQuery();
afbeeldingID = Int32.Parse(cmd.Parameters["@afbeeldingID"].Value.ToString());
errorCode = Int32.Parse(cmd.Parameters["@errorCode"].Value.ToString());
}
catch(Exception e)
{
System.Web.HttpContext.Current.Response.Write(e.Message.ToString());
}
conn.Close();
cmd.Dispose();
return afbeeldingID;
} |
de stored procedure
code:
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
27
28
| ALTER PROCEDURE ldn_SaveAfbeelding
(
@filename varchar(255),
@filecol binary,
@size int,
@afbeeldingID int OUTPUT,
@errorCode int OUTPUT
)
AS
INSERT INTO afbeelding
(
filename,
filecol,
grootte
)
VALUES
(
@filename,
@filecol,
@size
)
-- Get the Error Code for the statement just executed.
SELECT @errorCode=@@ERROR
-- Get the IDENTITY value for the row just inserted.
SELECT @afbeeldingID=SCOPE_IDENTITY()
-- GO |
het opslaan gaat prima, geen foutmeldingen bij beide methoden echter als ik vervolgens probeer de afbeelding te bekijken, krijg ik bij de eerste methode netjes mijn afbeelding maar bij mijn twee methode onderstaande melding:
?!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
wie kan mij verder helpen?