0

から保存ボタンでデータを保存したい:

idbox (テキストボックス) - empbox (コンボボックス) - jobbox (コンボボックス) - unitbox (コンボボックス) -

destbox (コンボボックス) - detectivebox (コンボボックス) - statebox (コンボボックス) -

投資日 (日付ピッカー) - 投資結果 (テキストボックス)

同じ順序でテーブルのインベストメントインサイドに:

id - 従業員 - ユニット - ジョブ - 目的地 - 探偵 - 州 - 投資日 - 投資結果

私はこれを試してみましたが、エラーはありませんでしたが、チェックするとテーブルに何も保存されませんでした....

その理由は何ですか?

これが私が試したコードです

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;


namespace beta_2
{
    public partial class Dentry_main : Form
{
        OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=beta2.mdb;");
    OleDbDataAdapter da;
    DataSet ds = new DataSet();
    OleDbCommand com = new OleDbCommand();
    string sql;

    public Dentry_main()
    {
        InitializeComponent();
    }

    private void Dentry_main_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'beta2DataSet.stateinside' table. You can move, or remove it, as needed.
        this.stateinsideTableAdapter.Fill(this.beta2DataSet.stateinside);
        // TODO: This line of code loads data into the 'beta2DataSet.detectivestbl' table. You can move, or remove it, as needed.
        this.detectivestblTableAdapter.Fill(this.beta2DataSet.detectivestbl);
        // TODO: This line of code loads data into the 'beta2DataSet.departments' table. You can move, or remove it, as needed.
        this.departmentsTableAdapter.Fill(this.beta2DataSet.departments);
        // TODO: This line of code loads data into the 'beta2DataSet.units' table. You can move, or remove it, as needed.
        this.unitsTableAdapter.Fill(this.beta2DataSet.units);
        // TODO: This line of code loads data into the 'beta2DataSet.employees' table. You can move, or remove it, as needed.
        this.employeesTableAdapter.Fill(this.beta2DataSet.employees);

    }

    private void button1_Click(object sender, EventArgs e)
    {
        conn.Open();
        com.Connection = conn;
        sql = "INSERT INTO investinside([id],[emp],[job],[unit],[dest],[detective],[state],[investdate],[investresult])VALUES(@id,@emp,@job,@unit,@dest,@detective,@state,@investdate,@investresult)";
        com.CommandText = sql;
        com.Parameters.Clear();
        com.Parameters.AddWithValue("@id", idbox.Text);
        com.Parameters.AddWithValue("@emp", empbox.Text);
        com.Parameters.AddWithValue("@job", jobbox.Text);
        com.Parameters.AddWithValue("@unit", unitbox.Text);
        com.Parameters.AddWithValue("@dest", destbox.Text);
        com.Parameters.AddWithValue("@detective", detectivebox.Text);
        com.Parameters.AddWithValue("@state", statebox.Text);
        com.Parameters.AddWithValue("@investdate", investdatebox.Text);
        com.Parameters.AddWithValue("@investresult", investresultbox.Text);
        com.ExecuteNonQuery();
        MessageBox.Show("success");
        conn.Close();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        this.Close();
    }
}

}

4

2 に答える 2

0

ADO.Net を使いやすくする方法はたくさんあります。

テーブルに主キーがある場合は、ADO.Net のCommandBuilder機能を調べてください。

その場合、テーブルにデータを追加するには、単純な DataTable.Rows.Add と DataAdapter.Update を使用します。

手動でやりたい場合は、ずっと手動でやってみることができます。それ以外の:



    "INSERT INTO investinside([id],[emp],[job],[unit],[dest],[detective],[state],[investdate],[investresult])VALUES(@id,@emp,@job,@unit,@dest,@detective,@state,@investdate,@investresult)"

試す



    string.Format("INSERT INTO investinside([id],[emp],[job],[unit],[dest],[detective],[state],[investdate],[investresult])VALUES('{0}','{1}',....)", idbox.Text, empbox.Text,...)

于 2013-03-22T11:15:20.723 に答える
-1

ローカルDB接続をしているようです。これは私が通常接続する方法です...「サーバー= USUALLY_YOYR_PC_NAME_CAPPITAL_LETTERS;データベース=データベース名;統合セキュリティ=はい」

最後の部分の統合セキュリティは重要です。省略しないでください。

アドバイス: MSDN の ORM - Entity Frame Work チュートリアルを参照してください。私は SQL ステートメントよりもむしろオブジェクトを使用します。また、私はいつもスペルミスをします。SQLはそれらを許しません-Entity Frameworkでは台無しにすることはできません...

于 2013-03-21T19:17:22.027 に答える