私はここC#でSQLを学習していますが、少し問題があります。私は既存のデータを上書きすることなく、SQLテーブルにデータを挿入する方法を理解できません。C#SQLヘルプ! Insert Intoが既存のデータを上書きしています
私はテーブルに値を簡単に追加することができます。私はテストのためにデータを設定するメソッドを作成し、500個の値を簡単かつ迅速に追加することもできます。しかし、再度実行すると、それに。誰かが私は単にそれを上書きすることなく、既存のテーブルに追加する何をする必要があるか私に言うことができる場合は、任意のヘルプは大幅に
public static void AddSongViaClass(Songs s)
{
string conStr = "TestSQL.Properties.Settings.ArtistConnectionString";
using (SqlConnection sqlcon = new SqlConnection(GetConnectionString(conStr)))
{
sqlcon.Open();
try
{
string query = "INSERT INTO Songs (Name, Id, Album, TrackNumber, TrackNumberCount, Genre, Rating, Tags, Subject, Categories, Comments, FileName, FolderName, FolderPath, FullPath, Length, PlayCount, SkipCount, LastPlayed)";
query += " VALUES (@Name, @Id, @Album, @TrackNumber, @TrackNumberCount, @Genre, @Rating, @Tags, @Subject, @Categories, @Comments, @FileName, @FolderName, @FolderPath, @FullPath, @Length, @PlayCount, @SkipCount, @LastPlayed)";
using (SqlCommand cmd = new SqlCommand(query, sqlcon))
{
cmd.Parameters.Add(new SqlParameter("Name", s.Name));
cmd.Parameters.Add(new SqlParameter("Id", s.Id));
cmd.Parameters.Add(new SqlParameter("Album", s.Album));
cmd.Parameters.Add(new SqlParameter("TrackNumber", s.TrackNumber));
cmd.Parameters.Add(new SqlParameter("TrackNumberCount", s.TrackNumberCount));
cmd.Parameters.Add(new SqlParameter("Genre",s.Genre));
cmd.Parameters.Add(new SqlParameter("Rating", s.Rating));
cmd.Parameters.Add(new SqlParameter("Tags", s.Tags));
cmd.Parameters.Add(new SqlParameter("Subject", s.Subject));
cmd.Parameters.Add(new SqlParameter("Categories", s.Categories));
cmd.Parameters.Add(new SqlParameter("Comments", s.Comments));
cmd.Parameters.Add(new SqlParameter("FileName", s.FileName));
cmd.Parameters.Add(new SqlParameter("FolderName", s.FolderName));
cmd.Parameters.Add(new SqlParameter("FolderPath", s.FolderPath));
cmd.Parameters.Add(new SqlParameter("FullPath", s.FullPath));
cmd.Parameters.Add(new SqlParameter("Length", s.Length));
cmd.Parameters.Add(new SqlParameter("PlayCount", s.PlayCount));
cmd.Parameters.Add(new SqlParameter("SkipCount", s.SkipCount));
cmd.Parameters.Add(new SqlParameter("LastPlayed", s.LastPlayed));
cmd.ExecuteNonQuery();
sqlcon.Close();
}
}
catch (Exception ex)
{
Console.WriteLine("Count not insert. {0}", s.Name);
Console.WriteLine("Error Message {0}", ex.Message);
}
}
}
を充当することになります。
は、ここに私のコードです。ありがとうございました!
あなたは好奇心旺盛であれば、これはすぐに私のテーブルを取り込むための私の方法です:
public static void JustDoIt()
{
Songs s = new Songs();
for (int i = 1; i <= 500; i++)
{
s.Name = "My Song Name " + i.ToString("D3");
s.Id = i.ToString();
s.Album = "My Song's Album " + i.ToString("D3");
s.TrackNumber = (i%13 == 0 ? 1: i%13).ToString("D3");
s.TrackNumberCount = "12";
s.Genre = "Something";
s.Rating = (i%20/100*i).ToString("D3");
s.Tags = "Tags " + i.ToString("D3") + " and more tags";
s.Subject = "Subjects";
s.Categories = "Categories";
s.Comments = "Comments";
s.FileName = "Ashes Remain - Christmas - 02 - Gift of Love.mp3";
s.FolderName = "My folder name";
s.FolderPath = @"L:\Dropbox\Music\00- Sync'd Music\Ashes Remain";
s.FullPath = s.FolderName + "\\" + s.FolderPath;
s.Length = "3:" + i/60;
s.PlayCount = "12";
s.SkipCount = "1";
s.LastPlayed = DateTime.Now.ToString();
SQL_AddNewRecord.AddSongViaClass(s);
Console.WriteLine(i);
}
}
ありがとう!
は、主キーとして「ID」を聞かせて、そのために自動インクリメントを使用します。 –
エラーが発生していますか?私はあなたのSQL tqbleの構造が分かりませんが、あなたが手作業でs.idを設定していることがわかります。それはIDキーの場合には変だと思われます。 – Massanu
接続文字列を表示できますか?これはデスクトップアプリですか、ウェブアプリですか? – Steve