2016-11-10 18 views
2

私はこのWebサイトのほぼすべてのソリューションを試しましたが、私はこの問題を解決できません。私は、ODBC接続を介してデータベースから取得されたデータを持っています。データはそこにあります。それはちょうど良いデータグリッドビューに入るだろうが、私はこのデータを私のローカルSQLデータベースに入れることができません。私が間違っていることを教えてください。C#データテーブルからSQL Serverデータベースにデータを挿入

public partial class frmNorth : Form 
{ 
     // variables for the connections 
     private OdbcConnection epnConnection = new OdbcConnection(); 
     private SqlConnection tempDbConnection = new SqlConnection(); 
public frmNorth() 
{ 
    InitializeComponent(); 
    // This is for the ePN DB 
    epnConnection.ConnectionString = @"Dsn=ePN; uid=username; pwd=myPa$$Word"; 
    // This is for the local DB 
    tempDbConnection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\TempDB.mdf;Integrated Security=True"; 
} 
private void btnLoadData_Click(object sender, EventArgs e) 
{ 
    try 
     { 
      //===This part works just fine=============================================================== 
      epnConnection.Open(); 
      string epnQuery = "SELECT FNCL_SPLIT_REC_ID, PROJ_ID, SALES_SRC_PRC " + 
           "FROM PROJ_FNCL_SPLIT " + 
           "WHERE PROJ_ID=" + textBox1.Text + ""; 
      OdbcCommand epnCommand = new OdbcCommand(epnQuery, epnConnection); 
      epnCommand.CommandTimeout = 0; 

      //This connects the data to the data table 
      OdbcDataAdapter da = new OdbcDataAdapter(epnCommand); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      dataGridView1.DataSource = dt; 
      //=========================================================================================== 


      //======The part below is the part that wont work. The data wont go into the SQL database==== 
      tempDbConnection.Open(); 
      string tempSql = ""; 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       tempSql = "INSERT INTO tblTemp (FNCL_SPLIT_REC_ID, PROJ_ID, SALES_SRC_PRC) VALUES ('" 
          + dt.Rows[i]["FNCL_SPLIT_REC_ID"].ToString().Trim() + "','" 
          + dt.Rows[i]["PROJ_ID"].ToString().Trim() + "','" 
          + dt.Rows[i]["SALES_SRC_PRC"].ToString().Trim() + "');"; 
       SqlCommand tempCommand = new SqlCommand(tempSql, tempDbConnection); 
       tempCommand.ExecuteNonQuery(); 
      } 
       // There are no errors. The data just doesn't save to the database. 
      //=========================================================================================== 

      epnConnection.Close(); 
      tempDbConnection.Close(); 

     } 
     catch (Exception ex) 
     { 
      epnConnection.Close(); 
      tempDbConnection.Close(); 
      MessageBox.Show("Error " + ex); 
     } 
    } 
} 
} 

    //+++++++++++++++++++This is what the table looks like+++++++++++++++++++++++++++++++++++++++++++++++ 
    CREATE TABLE [dbo].[tblTemp] (
[FNCL_SPLIT_REC_ID] INT  NOT NULL, 
[PROJ_ID]   NCHAR (10) NULL, 
[SALES_SRC_PRC]  MONEY  NULL, 
PRIMARY KEY CLUSTERED ([FNCL_SPLIT_REC_ID] ASC) 

私はエラーが発生しないと言いました。データはデータベースに保存されません。

+0

交換してください。その後、実行中のクエリを観察するためにSQLプロファイラを使用する必要があります。 –

+0

エラーが発生せず、実行が確認されたので、あなたは挿入のために正しいデータベースとテーブルをチェックしていますか? – Adil

答えて

1
"INSERT INTO tblTemp (FNCL_SPLIT_REC_ID, PROJ_ID, SALES_SRC_PRC) VALUES (" 
        + dt.Rows[i]["FNCL_SPLIT_REC_ID"].ToString().Trim() + ",'" 
        + dt.Rows[i]["PROJ_ID"].ToString().Trim() + "'," 
        + dt.Rows[i]["SALES_SRC_PRC"].ToString().Trim() + ");"; 

それはお金であるので、それはint型とSALES_SRC_PRCあるとして「」FNCL_SPLIT_REC_ID間を削除しました。

0

実装したコードにエラーが見つかりませんでした。 mdfファイルの接続定義が間違っていることがわかりました。

|DataDirectory|アプリケーションを実行するフォルダへのパスを設定します。この場合、デバッグモードで実行すると、.mdfファイルなどのアプリケーションリソースを持つDebug \ binフォルダに別のアプリケーションexeが作成されます。またはリリースモードでは、リリースフォルダ内に特定のフォルダを作成します。データベース接続のためにデータベースファイル名を変更する必要があります。または、接続文字列のディレクトリパス全体を指定する必要があります。例

tempDbConnection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\TempDB.mdf;Integrated Security=True"; 
} 

は、あなたがラインで、あなたのコード行をステップ実行し、実行していることを観察する必要が

tempDbConnection.ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Promod\Documents\Visual Studio 2012\Projects\Contribution1\Contribution1\bin\Debug\TempDB.mdf;Integrated Security=True"; 
関連する問題