|
Since you seem to not want to describe in more precise terms exactly what you're doing, you can start by reading the documentation on the MySQLBulkLoader[^] class. This comes with the MySQL Connector/NET library.
If it'll work for your situation is impossible to say (see above), but it's about as fast as you're going to get for bulk import functionality in your C# app.
|
|
|
|
|
ven753 wrote: Actually i want to do it in c# coding. Is the target-database live during that time? It will have an impact on any running queries, of course.
FWIW, you're allowed to start a bulk-import from C#, but something tells me you "want" to use a IDbCommand . If you go that route, then do it with "more" and not in "less" time - Start a low-priority background-thread, insert the records into a NEW table, and when succeeded, copy the records from the new table to it's destination.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Ever fastest method is the AJAX call usage. Using JS,JQuery and Web method to store data in DB
|
|
|
|
|
I've been working on a new .NET client to replace my organization's Java tool that they've been using for consuming a web service. Nobody here knows much Java, nor do they care to learn it. Since .NET is my background anyway, I was tasked with getting this to work.
Everything works except downloading documents. The web service is configured to send them as MTOM attachments. The server side works fine because I can execute the API calls in SoapUI without any trouble, but when I added the service reference via svcutil to my .NET client, it didn't auto-configure to look for and decode MTOM attachments; instead, I get the error message about "client was looking for text/xml and found multipart/xml", etc. I did a lot of searching to find information about configuring it to look for MTOM, but the problem is that svcutil didn't configure the proxy class from System.ServiceModel, but rather built it on System.Web.Services. I can't find examples that use System.Web.Services, so I'm rather in the dark.
I've already asked for specific help about how to fix the current client on Stack Overflow[^] and on MSDN[^], and in the 3-4 days since, haven't even gotten a comment. So, that's not what I'm after here. What I want to know is this: If you were to write an app in .NET to upload and download documents using MTOM, where would you start?
|
|
|
|
|
Antessima wrote: If you were to write an app in .NET to upload and download documents using MTOM, where would you start?
Google, which always points me back to MSDN. Seems they have a sample[^].
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I'd been to that page many, many times already, and it wasn't much help. The problem was that I didn't know how to get from just having a WSDL doc to that point. Funny how you can Google "MTOM .NET" and "WCF MTOM" and "WCF MTOM .NET Client" all day long and get lots of stuff that doesn't fit the bill, but if you just Google "WCF Client", like I finally did yesterday around 1:30pm, you get this[^] as your fourth result.
I've since followed the instructions on that page, and, combined with a little help finding the right WSDL for WCF (the original didn't have the necessary data to implement in WCF) and finding additional instructions[^] on how to use svcutil via the command line to generate a WCF-compliant proxy class, I now have exactly what I was looking for.
|
|
|
|
|
Antessima wrote: I'd been to that page many, many times already, and it wasn't much help Yup, that's how MSDN is often described
Antessima wrote: I now have exactly what I was looking for. Well deserved
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Happy Day,
I am Working on a Project FrontEnd(Asp.net) Coding C# ANd Back End(Sql Server 2008).... I have included sending mail concept to users(i.e If the request to send the Password To mail) in my Project... Now I am Planning to include the <big>Message Sending Concept</big> for the users(i.e If the request to send the Password To their mobile)... So is their Any way that i can send message to their mobile...
One Way I heard is Sending Using Free Sms Api's...
So can i know any <big>Free(Working) Sms API's</big> Which Allows me to send message using Any Providers such as(Way2sms,Fullonsms,160by2 etc...)...
Or is their any other way that i can send the Message for free....
Thanks In Advance....
Happy Coding....
modified 10-Jun-13 9:32am.
|
|
|
|
|
prakashbhanu24 wrote: So is their Any way that i can send message to their mobile SMS, usually a paid service, or mail, not available on older phones.
prakashbhanu24 wrote: Or is their any other way that i can send the Message for free. The forum mainly focusses on programming questions; I'm not aware of any sms-vendor tht offers his service free-of-charge.
Even http://www.afreesms.com/freesms/[^] will need to display their ads to at least cover their own costs. Install an ad-blocker, and the service becomes unavailable.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Implement web api to interact with server mobile and other APIs
|
|
|
|
|
Hi,
I've a Database with colums of various types, such as Strings ant int sof various sizes.
The 'SqlDataReader' apparently reads evere]y thing as text (or Objects).
How do I retrieve the stored binary value of the entry. The required function is marked with '?????' below.
public static bool SetCurrentUser(String UserKey, String Password)
{
SqlConnection myConnection = new SqlConnection("server=localhost;"+
"Trusted_Connection=yes;" +
"database=SgTextiles; " +
"connection timeout=30");
myConnection.Open();
SqlCommand myCommand = new SqlCommand("SELECT *FROM dbo.Users where UserKey=" +
UserKey + "AND Password=" + Password, myConnection);
SqlDataReader myReader = myCommand.ExecuteReader();
if (myReader.Read())
{
CurrentUserName = myReader["UserName"].ToString();
CurrentUserKey = myReader["UserKey"].ToString();
String UID= myReader["ID"].ToString();
CurrentUserID=UID.??????;
CurrentRole = 0;
}
else
{
return false;
}
return true;
}
N.B. 'CurrentUserID' is a statically declared 'int'
Maybe I should use a different API from start to retrieve the information.
Regards,
Bram.
Bram van Kampen
|
|
|
|
|
You can use DateTime.TryParse() [^] to check if the value is a date time field or not, and if it is, assign appropriately.
|
|
|
|
|
Parameters should be returned as the types defined in the schema of the database. You should not call the ToString method on them thus:
CurrentUserName = myReader["UserName"].ToString();
String UID= myReader["ID"].ToString();
Just use
CurrentUserName = myReader["UserName"];
int UID= myReader["ID"];
See Richard Deeming's answer below.
Use the best guess
modified 10-Jun-13 7:45am.
|
|
|
|
|
That might work in VB with Option Explicit Off , but it's not going to work in C#. The IDataRecord indexer returns an Object , which you'll need to unbox to the correct type.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
You are, of course, correct; I misread some code of mine.
Use the best guess
|
|
|
|
|
Assuming the "ID" field is returned as an int from the database, try:
CurrentUserID = (int)myReader["ID"];
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
|
You should probably be using the SqlDataReader GetXXXX functions, like:
myReader.GetInt32(X) -> where X is the Column INDEX (not the name). Its unfortunate that these functions only work on the index, but you could also do:
myReader.GetInt32(myReader.GetOrdinal(columnName))
The only thing you have to do (and you do with your code above too, but you haven't encountered the error yet) is to check for null values on that column before trying to retrieve the values. Trying to read a NULL value as an Integer will give you an exception (it doesn't with string or object because null is implicitly convertible to both).
Link to MSDN article that shows the Get functions.[^]
|
|
|
|
|
A few weeks ago there I seen a question regarding converting colors to grayscale equivalents and it caught my interest. I found an article that presented various methods and decided to give it a try in VB.Net. This is my code.
<System.Runtime.CompilerServices.Extension()> _
Public Function ToGrayScale(ByVal img As Image, ByVal method As Methods) As Image
If Not [Enum].IsDefined(GetType(Methods), method) Then
Return Nothing
End If
' set the grayscale function to use for conversion
Dim gsfunc As Func(Of Color, Color) = Nothing
Select Case method
Case Methods.Average : gsfunc = AddressOf Average
Case Methods.CorrectingForTheHumanEye_Gimp : gsfunc = AddressOf Gimp
Case Methods.CorrectingForTheHumanEye_BT_601 : gsfunc = AddressOf BT_601
Case Methods.CorrectingForTheHumanEye_BT_709 : gsfunc = AddressOf BT_709
Case Methods.Desaturation : gsfunc = AddressOf Desaturation
Case Methods.DecompositionMax : gsfunc = AddressOf DecompositionMax
Case Methods.DecompositionMin : gsfunc = AddressOf DecompositionMin
Case Methods.SingleColorRed : gsfunc = AddressOf SingleColorRed
Case Methods.SingleColorGreen : gsfunc = AddressOf SingleColorGreen
Case Methods.SingleColorBlue : gsfunc = AddressOf SingleColorBlue
End Select
' create a 32bppArgb bitmap from source image
Dim bm As New Bitmap(img.Width, img.Height, Imaging.PixelFormat.Format32bppArgb)
Dim g As Graphics = Graphics.FromImage(bm)
g.DrawImageUnscaled(img, Point.Empty)
g.Dispose()
Dim bmdata As System.Drawing.Imaging.BitmapData
' convert 1 row of pixels at a time
Dim pixelcolors(0 To bm.Width - 1) As Int32
For row As Int32 = 0 To bm.Height - 1
' lock the row in memory
bmdata = bm.LockBits(New Rectangle(0, row, bm.Width, 1), _
Drawing.Imaging.ImageLockMode.ReadWrite, _
bm.PixelFormat)
' get row data as array integer color
System.Runtime.InteropServices.Marshal.Copy(bmdata.Scan0, pixelcolors, 0, bm.Width)
' convert each pixel color to grayscale using selected method
For col As Int32 = 0 To bm.Width - 1
pixelcolors(col) = gsfunc(Color.FromArgb(pixelcolors(col))).ToArgb()
Next col
System.Runtime.InteropServices.Marshal.Copy(pixelcolors, 0, bmdata.Scan0, bm.Width)
bm.UnlockBits(bmdata) ' release memory lock
bmdata = Nothing
Next row
Return bm
End Function
Everything seems to work fine, but I have been trying various tweaks to improve the processing speed and wondered if converting it to C# and using a pointer approach would help. I initially translated my exiting VB code to C# to make sure I had this part correct before modifying the logic to use pointers.
public static Image ToGrayScale(this Image img, Methods method)
{
if (!(Enum.IsDefined(typeof(Methods), method)))
{
return null;
}
Func<Color, Color> gsfunc = null;
switch (method)
{
case Methods.Average:
gsfunc = Average;
break;
case Methods.CorrectingForTheHumanEye_Gimp:
gsfunc = Gimp;
break;
case Methods.CorrectingForTheHumanEye_BT_601:
gsfunc = BT_601;
break;
case Methods.CorrectingForTheHumanEye_BT_709:
gsfunc = BT_709;
break;
case Methods.Desaturation:
gsfunc = Desaturation;
break;
case Methods.DecompositionMax:
gsfunc = DecompositionMax;
break;
case Methods.DecompositionMin:
gsfunc = DecompositionMin;
break;
case Methods.SingleColorRed:
gsfunc = SingleColorRed;
break;
case Methods.SingleColorGreen:
gsfunc = SingleColorGreen;
break;
case Methods.SingleColorBlue:
gsfunc = SingleColorBlue;
break;
}
Bitmap bm = new Bitmap(img.Width, img.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(bm);
g.DrawImageUnscaled(img, Point.Empty);
g.Dispose();
System.Drawing.Imaging.BitmapData bmdata = null;
Int32[] pixelcolors = new Int32[bm.Width];
for (Int32 row = 0; row < bm.Height; row++)
{
bmdata = bm.LockBits(new Rectangle(0, row, bm.Width, 1), System.Drawing.Imaging.ImageLockMode.ReadWrite, bm.PixelFormat);
System.Runtime.InteropServices.Marshal.Copy(bmdata.Scan0, pixelcolors, 0, bm.Width);
for (Int32 col = 0; col < bm.Width; col++)
{
pixelcolors[col] = gsfunc(Color.FromArgb(pixelcolors[col])).ToArgb();
}
System.Runtime.InteropServices.Marshal.Copy(pixelcolors, 0, bmdata.Scan0, bm.Width);
bm.UnlockBits(bmdata);
bmdata = null;
}
return bm;
}
However, the C# version takes approximately 50% longer to execute than the VB version and this is what I do not understand and was hoping someone could provide an explanation for this performance difference. I freely admit that I only dabble in C#, so maybe there is something inherent to C# that makes this logic fine in VB and not in C#? To rule out a FUBAR'ed install, I have moved the code to another computer and got the same results (assuming it is not messed up too).
For testing purposes, I have using this grayscale method.
Private Function BT_601(ByVal c As Color) As Color
Dim gs As Int32 = CInt((c.R * 0.299) + (c.G * 0.587) + (c.B * 0.114))
Return Color.FromArgb(c.A, gs, gs, gs)
End Function
private static Color BT_601(Color c)
{
Int32 gs = Convert.ToInt32((c.R * 0.299) + (c.G * 0.587) + (c.B * 0.114));
return Color.FromArgb(c.A, gs, gs, gs);
}
I have uploaded the project (http://sdrv.ms/13qH5OM[^]) if anyone wants to look at it. This was developed under VS2008.
Thanks in advance for insights on this.
|
|
|
|
|
Well,
Converting between languages in ASP.Net projects, cannnot ever produce a runtime performance. The reason is simple: they all compile to the same CRL module. You could compile it in C++(unmanaged),with significant improvements in speed, but I am not sure if the latest C++/MFC version supportsthe language constructs you use in your source code.
Regards,
Bram van Kampen
|
|
|
|
|
Thank you for the response.
This is currently a WinForm project.
I did not expect to observe a significant difference or any at all. However, I did and that is what prompted me to post my question.
There does appear to be some difference in IL generated from C# and that from the VB code when viewed using Reflector. However I do not understand IL, so I don't know what those differences amount to.
I was mainly wondering if anyone else had ever observed such behavior and if there was a reason for it.
I am sure you correct that writing it in C++ would give a significant performance boost, and this might be another excuse to venture into C land again. It has been 8 months since my last vist and I think all the wounds to my ego have healed.
|
|
|
|
|
This is a really good job for a profiler, the difference may be something subtle like the way the C# compiler generates MSIL versus the VB one. Yes, even a line-for-line translation of exactly the same code as you've done above will have different MSIL (in contrast to what your other answer has given).
There are some performance improvements you can implement above. You convert the pixel data from an integer, to a color, back to an integer, then back to a color, then back to an integer
Pixel Data->ToARGB->BT_601->Convert.ToInt32->FromARGB->ToArgb
In my mind it would be simpler to use bit level math for this. Make the BT_601 take the integer data, like:
private static int BT_601(int c)
{
int gs = (((0x00FF0000 & c) >> 16) * 0.299) << 16) +
(((0x0000FF00 & c) >> 8 ) * 0.587) << 8) +
(((0x000000FF & c) * 0.114);
return (0xFF000000 & c) | (gs << 16) | (gs << 8) | gs;
}
Which is much faster compiler wise than trying to use all those conversions and function calls.
You may also want to do LockBits twice, once with read permission (not read/write) and the next time with write permission (not read). The one-way access helps optimize access to the buffer. You can also get about a 2 time increase by using pointers and unsafe code. You can also try to wrap your for loop in an unchecked block, which will keep the framework from doing bounds checks each time you access the array.
modified 10-Jun-13 1:14am.
|
|
|
|
|
Ron,
Thank you for the well deserved kick in the pants on optimizing the individual grayscale calculations.
I was too pleased with myself for figuring out that I could read/write the color as an integer versus the separate alpha, red, green, blue bytes and performance boost that yielded as those individual bytes are then re-assembled to recreate that integer value in the Color structure.
As I am writing this, I have realized that my logic (and attempt to optimize) was completely flawed from the start as it was all premised on creating and using a Color structure. There is absolutely no need for this structure other than as a pretty box. Oh-well, back to the drawing board.
I have never used a profiler, but I will look into it. Unless someone else has an explanation, I will have to chalk this up to the VB compiler optimizing this code segment better than the C# compiler.
Thanks again, you made me re-think this and also made me realize that I have become susceptible to falling for the shiny box.
|
|
|
|
|
Hi
I am creating a complaint system, I am able to get the complaint details, and have employees leave comments, but I am unable to display the comments left on a case, as more than one person may pick up the case and leave their own comments, so I need a good way to display the comments left, the database will only have 4 columns, 1st with case ID, 2nd with employee name 3rd with date and 4th is the message columns, So i need to display 2nd, 3rd and 4th columns, I have looked at using the datagridview, but as the message columns is a memo field, it is not display as i want it to.
I would like the comments to be displayed as follows
Employees name
Date
Message
e.g
testuser1
09/06/2013
Test message about a sale made on the 31/05/13
-------------------------------------------------------------
testuser2
10/09/13
customer have been send a replacement item on 01/06/13
|
|
|
|
|
You could think of using a rich text box for your memo field.
You can also try and load just a porting of this text in a grid view column for the memo.
One a user clicks on the column display a popup with complete memo data.
|
|
|
|
|