Hej! Jag funderar på om det inte vore enklare att bara ha en ini.fil som du arbetar med? Hej, Jag var ute och sökte på bra sätt att spara ner en settingsfil dock verkade det som de flesta bara hade ett par settings och rekomenderade .settings, men så fann jag på codeprodjects hemsida en som gjort en settingsfil som var av formatet .ini men han blev av andra på detta forumet rekomenderad att använda sig av XML istället så det är av den anledningen jag gjort på det sätt jag gjort. Problemet ser ut att göra med följande rad: Jepp, såg det igår efter jag kollade igenom koden några gånger, irriterande med sånna där små missar man gör. för att slippa koda så mycket finns ett enklare sätt att spara parametra, finns ett bra exempel härProblem med DataSet
Jag håller på att göra min egen settings fil och vill använda ett DataSet för att spara variablerna som senare ska användas när jag gör en backup av olika filer på datorn.
DataSetet ska sedan sparas ner till en XML fil som ska kunna laddas när klienten vill göra samma backup igen.
Problemet jag har med detta är att jag inte lyckas få in variablerna i DataSetet, för programmet lyckas göra en .xml fil, dock innehåller denna fil bara Kolumn namnen.
Kan ni hitta felet jag gör?
private void SaveButton_Click(object sender, EventArgs e)
{
BSettings.BackupName = BackupName.Text;
myDataTable = new DataTable(BackupName.Text);
FillColumnNames();
for (int i = 0; i <= BackupItems.Items.Count-1; i++)
{
if (Int16.Parse(TypeID.Items[i].ToString()) == 1)
{
File.Copy(BackupItems.Items[i].ToString(), BackupPath.Items[0].ToString() + Path.GetFileName(BackupItems.Items[i].ToString()),true);
BSettings.NewPath = BackupPath.Items[0].ToString();
BSettings.OldPath = BackupItems.Items[i].ToString();
BSettings.BFileType = 1;
}
if (Int16.Parse(TypeID.Items[i].ToString()) == 2)
{
BDirs.copyFolders(folderPath, BackupPath.Items[0].ToString() + "\\" + BackupItems.Items[i].ToString());
BSettings.NewPath = BackupPath.Items[0].ToString() + "\\" + BackupItems.Items[i].ToString();
BSettings.OldPath = folderPath;
BSettings.BFileType = 2;
}
if (Int16.Parse(TypeID.Items[i].ToString()) == 3)
{
BSettings.DBName = dbNames[TableRuns];
BSettings.DBTables = BackupItems.Items[i].ToString();
BSettings.BFileType = 3;
TableRuns++;
}
addVarialbesToDataSet(Int16.Parse(TypeID.Items[i].ToString()));
}
BSettings.SaveSettings(ref myDataSet, BackupPath.Items[0].ToString() + "\\" + BackupName.Text + ".xml");
TableRuns = 0;
dataGridView1.DataSource = myDataSet;
dataGridView1.DataSource = myDataSet.Tables[0];
dataGridView1.Refresh();
}
private void addVarialbesToDataSet(int id)
{
object[] itemArray = new object[9];
if (id == 1)
{
itemArray[0] = BackupName.Text;
itemArray[1] = BSettings.BFileType;
itemArray[2] = null;
itemArray[3] = null;
itemArray[4] = BSettings.OldPath;
itemArray[5] = BSettings.NewPath;
itemArray[6] = null;
itemArray[7] = null;
itemArray[8] = null;
myDataRow = myDataTable.NewRow();
myDataRow.ItemArray = itemArray;
myDataTable.Rows.Add(myDataRow);
}
if (id == 2)
{
itemArray[0] = BackupName.Text;
itemArray[1] = BSettings.BFileType;
itemArray[2] = null;
itemArray[3] = null;
itemArray[4] = BSettings.OldPath;
itemArray[5] = BSettings.NewPath;
itemArray[6] = null;
itemArray[7] = null;
itemArray[8] = null;
myDataRow = myDataTable.NewRow();
myDataRow.ItemArray = itemArray;
myDataTable.Rows.Add(myDataRow);
}
if (id == 3)
{
itemArray[0] = BackupName.Text;
itemArray[1] = BSettings.BFileType;
itemArray[2] = null;
itemArray[3] = null;
itemArray[4] = null;
itemArray[5] = null;
itemArray[6] = BSettings.ConType;
itemArray[7] = BSettings.DBName;
itemArray[8] = BSettings.DBTables;
myDataRow = myDataTable.NewRow();
myDataRow.ItemArray = itemArray;
myDataTable.Rows.Add(myDataRow);
}
}
Sv: Problem med DataSet
Sv: Problem med DataSet
Jag ser inget direkt fel i den ovanstående koden, men felet kan ju ligga i någon av metoderna FillColumnNames() eller BSettings.SaveSettings(...). Om du inte har löst problemet så får du gärna göra ett nytt inlägg med de metoderna i så kan jag kolla vidare på det.
/StellanSv: Problem med DataSet
Och här kommer resten av den efterfrågade koden.
class BackupXMLSettings
{
private string backupName;
private int bfileType;
private string username;
private string userPass;
private string oldPath;
private string newPath;
private int conType = 0;
private string dbName;
private string dbTables;
public string BackupName
{
get
{
return backupName;
}
set
{
backupName = value;
}
}
public int BFileType
{
get
{
return bfileType;
}
set
{
bfileType = value;
}
}
public string UserName
{
get
{
return username;
}
set
{
username = value;
}
}
public string UserPass
{
get
{
return userPass;
}
set
{
userPass = value;
}
}
public string OldPath
{
get
{
return oldPath;
}
set
{
oldPath = value;
}
}
public string NewPath
{
get
{
return newPath;
}
set
{
newPath = value;
}
}
public int ConType
{
get
{
return conType;
}
set
{
conType = value;
}
}
public string DBName
{
get
{
return dbName;
}
set
{
dbName = value;
}
}
public string DBTables
{
get
{
return dbTables;
}
set
{
dbTables = value;
}
}
public void LoadSettings()
{
}
public void SaveSettings(ref DataSet ds, string locOnDisk)
{
//string settingsInfo = ds.GetXml();
StreamWriter xmlSW = new StreamWriter(locOnDisk);
ds.WriteXml(xmlSW, XmlWriteMode.WriteSchema);
xmlSW.Close();
}
}
private void FillColumnNames()
{
myDataTable.Columns.Add("BackupName");
myDataTable.Columns.Add("FileType");
myDataTable.Columns.Add("Username");
myDataTable.Columns.Add("UserPass");
myDataTable.Columns.Add("OldPath");
myDataTable.Columns.Add("NewPath");
myDataTable.Columns.Add("ConType");
myDataTable.Columns.Add("dbName");
myDataTable.Columns.Add("dbTables");
}Sv:Problem med DataSet
myDataTable = new DataTable(BackupName.Text);
Du skapar en ny datatabell men lägger inte till den i datasetet.
Då du får ut kolumnnamnen i filen så antar jag att du initialt skapar en tabell med rätt kolumndefinitioner som du lägger till datasetet. Problemet är att då du skapar en ny datatabell sätter du om medlemsvariabeln myDataTable till den nya datatabellen du skapat, men datasetet refererar fortfarande till den gamla tabellen.
Sv: Problem med DataSet
Jag la till:
myDataSet.Tables.Add(myDataTable);
i Save_Button metoden och sen funkade allt felfritt.
Har dock stött på ett nytt problem i programmet, settings filen måste ju överleva en total dator krash och jag har lite problem med var den ska sparas.
Optimalt så borde det ju vara där användaren lägger backupen men om han väljer flera backup ställen för olika "backup typer" så kommer jag ju behöva spara ner en massa paths någonstans.Sv: Problem med DataSet
http://blogs.vertigosoftware.com/swarren/archive/2006/11/28/4115.aspx
man använder sig System.Configuration.KeyValueConfigurationCollection