0

発言に問題ありINSERT。gridviev からデータを取得し、正常に動作しますが、それらをテーブルに挿入できません

private void button3_Click(object sender, EventArgs e)
{
    int amorplanid = 0;
    int idn = 0;
    DateTime datum;
    double interest = 0;
    double principal = 0;
    double payment = 0;
    double newprincipal = 0;

    string nizz = "";
    string[] niz= new string[7];
    for (int x = 0; x < dataGridView1.Rows.Count-1; x++)
    {
        for (int j = 0; j < dataGridView1.Rows[x].Cells.Count; j++)
        {
            nizz += dataGridView1.Rows[x].Cells[j].Value.ToString()+"."; 
        }
        niz = nizz.Split('.');

        amorplanid = System.Convert.ToInt32(niz[0]);
        idn = System.Convert.ToInt32(niz[1]);
        // datum = System.Convert.ToDateTime(niz[2]);
        datum = DateTime.Now;
        interest = System.Convert.ToDouble(niz[3]);
        principal = System.Convert.ToDouble(niz[4]);
        payment = System.Convert.ToDouble(niz[5]);
        newprincipal = System.Convert.ToDouble(niz[6]);

        String insert = @"INSERT INTO AmortPlanCoupT(ID, AmortPlanID, CoupDate, Interest, Principal, Payxment, NewPrincipal) VALUES (" + idn + "," + amorplanid + "," + datum + "," + (float)interest + "," + (float)principal + "," + (float)payment + "," + (float)newprincipal + ")";
        SqlConnection myconn = new SqlConnection(conn);
        // String MyString = @"INSERT INTO Employee(ID, FirstName, LastName) VALUES(2, 'G', 'M')";
        try
        {
            myconn.Open();
            SqlCommand cmd = new SqlCommand(insert, myconn);
            cmd.ExecuteNonQuery();
            myconn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

    label14.Text = niz[0];
}

テストする Windows コンソール アプリを作成しました。

test2列のテーブルがありますid (int) , leto (float)

SqlConnection MyConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\App_Data\Database1.mdf;Integrated Security=True;User Instance=True");

try
{
    MyConnection.Open();

    String MyString = @"INSERT INTO test(id, leto) VALUES(2, 2)";
    SqlCommand MyCmd = new SqlCommand(MyString, MyConnection);

    MyCmd.ExecuteScalar();
    MyConnection.Close();
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}

私はテーブルにデータを書き込むためにさまざまなことを試みてきましたが、そこに到達できません。

4

2 に答える 2

5

このサイトで以前に述べたように、ユーザー インスタンス全体と AttachDbFileName=のアプローチには欠陥があります。せいぜい! Visual Studio は.mdfファイルをコピーし、おそらく問題なく動作しますが、最終的に間違った .mdf ファイルINSERTを見ているだけです!

このアプローチに固執したい場合は、myConnection.Close()呼び出しにブレークポイントを設定してから、 .mdfSQL Server Mgmt Studio Express でファイルを調べてください。データがそこにあることはほぼ確実です。

私の意見では、本当の解決策は

  1. SQL Server Express をインストールします (とにかく、既に完了しています)。

  2. SQL Server Management Studio Express をインストールする

  3. SSMS Expressでデータベースを作成し、論理名を付けます (例: Database1)

  4. 論理データベース名(サーバー上でデータベースを作成したときに指定) を使用して接続し、物理データベース ファイルとユーザー インスタンスをいじらないでください。その場合、接続文字列は次のようになります。

    Data Source=.\SQLEXPRESS;Database=Database1;Integrated Security=True
    

    そして、それ以外はすべて以前とまったく同じです...

于 2012-05-24T14:57:19.897 に答える
-2

先に進む前に、文字列連結の代わりにパラメーターを使用するようにコードを書き直す必要があります。

于 2012-05-24T14:56:16.073 に答える