ローカルSQL Server CEデータベース(mainDB.sdf
)にはUsers
という1つのテーブルしかありません。SqlCeDataAdapterを使用してC#でローカルデータベースに新しい行を挿入する
は7列からなる:
Name (ntext)
Surname (ntext)
Nickname (nchar, unique, primary key)
Gender (ntext)
Status (ntext)
City (ntext)
- 私はオブジェクトを使用
Photo (image)
:
private SqlCeConnection connection;
private SqlCeDataAdapter adapter;
private SqlCeCommandBuilder builder;
private DataSet data;
はまず、私は、データベースへの接続:
connection = new SqlCeConnection("Data Source = mainDB.sdf");
connection.Open();
SqlCeCommand cmd = connection.CreateCommand();
cmd.CommandText = "SELECT * FROM Users";
adapter = new SqlCeDataAdapter(cmd);
builder = new SqlCeCommandBuilder();
builder.DataAdapter = adapter;
data = new DataSet();
adapter.Fill(data);
私は新しい行を挿入しよう:
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
byte[] im = ms.ToArray();
DataRow newRow = data.Tables[0].NewRow();
newRow["Name"] = textBox1.Text;
newRow["Surname"] = textBox2.Text;
newRow["Nickname"] = textBox3.Text;
newRow["Gender"] = listBox1.Text.Length > 0 ? listBox1.Text : null;
newRow["Status"] = radioButton1.Checked ? "Student" : radioButton2.Checked ? "Professional" : null;
newRow["City"] = comboBox1.Text.Length > 0 ? comboBox1.Text : null;
newRow["Photo"] = im;
data.Tables[0].Rows.Add(newRow);
adapter.Update(data);
connection.Close();
後これ、私はテーブルのユーザーに行くと、新しいデータはありません。 SqlCeCommandBuilderは必要なコマンドを生成する必要があります。私はここで何が欠けていますか?
重要な編集:
すべて正常です。 c#はデータベースへの2つのリンクを作成するようです。最初のものはmainDB.sdf
と呼ばれるプロジェクトフォルダにあり、空です。しかし、bin\Debug
フォルダにもう1つあります。絶対初心者として私はそれを知らなかった。そのDBの前のすべての行をmainDB.sdf1
とし、New Query
を選択してSELECT * FROM USERS
と入力することができました。最初のmainDB.sdf
と同じコマンドには何も表示されません。これが問題でした。
あなたの列の使用に適切なデータ型は。 nTextは非常に大きなテキストのためのものであり、名前のためではありません(これはほとんど10文字より長くなりません)。 –