2013-03-14 58 views
0

這是情景:SYSDATETIME()上插入查詢作爲參數

我需要插入我的數據庫中的某些行,其中一列是DateTime類型,其中有SYSDATETIME爲值,通常我的查詢是這樣的

String sqlString = "INSERT INTO Temas(Id, Level,Date, Description) " + 
         " VALUES (100, 3, SYSDATETIME() , 'Text ')"; 

現在我有使用參數,使插入,現在它看起來像這樣:

private void InsertTemaInTesauro(OleDbDataReader origenReader,Materias materia) 
    { 
     SqlConnection connectionEpsOle = Conexiones.GetConecction(); 
     SqlDataAdapter dataAdapter; 

     DataSet dataSet = new DataSet(); 
     DataRow dr; 

      string sqlCadena = "SELECT * FROM Temas WHERE idTema = 0"; 
      dataAdapter = new SqlDataAdapter(); 
      dataAdapter.SelectCommand = new SqlCommand(sqlCadena, connectionEpsOle); 

      dataAdapter.Fill(dataSet, "Temas"); 

      dr = dataSet.Tables["Temas"].NewRow(); 
      dr["Id"] = 100; 
      dr["Level"] = 3; 
      dr["Date"] = ????; 
      dr["Description"] = 'Some text'; 

      dataSet.Tables["Temas"].Rows.Add(dr); 

      //dataAdapter.UpdateCommand = connectionEpsOle.CreateCommand(); 
      dataAdapter.InsertCommand = connectionEpsOle.CreateCommand(); 
      dataAdapter.InsertCommand.CommandText = 
                "INSERT INTO Temas(Id,Level,Date,Description) (@Id,@Level,@Date,@Description)"; 

      dataAdapter.InsertCommand.Parameters.Add("@Id", SqlDbType.Numeric, 0, "Id"); 
      dataAdapter.InsertCommand.Parameters.Add("@Level", SqlDbType.Numeric, 0, "Level"); 
      dataAdapter.InsertCommand.Parameters.Add("@Date", SqlDbType.DateTime, 0, "Date"); 
      dataAdapter.InsertCommand.Parameters.Add("@Description", SqlDbType.Numeric, 0, "Description"); 

      dataAdapter.Update(dataSet, "Temas"); 

      dataSet.Dispose(); 
      dataAdapter.Dispose(); 
      connectionEpsOle.Close(); 
    } 

我的問題是如何設置日期參數取SYSDATETIME的值()我不能將它設置爲列的默認值,因爲我沒有訪問數據庫,我不能使用DateTime.Now,因爲老闆想要數據庫的時間

+0

如何預先運行查詢以獲取SysDateTime? – Oliver 2013-03-14 18:35:34

+0

你的問題的目標沒有多大意義。參數用於將代碼中的值傳遞給查詢。如果您想在查詢中使用'SYSDATETIME()'的值,那麼只需在查詢中使用'SYSDATETIME()'並使用其他參數。爲什麼要跳過尋找一個比你現有的效果差的解決方案? – JLRishe 2013-03-14 18:37:41

+0

如果您想從客戶端提供日期/時間,爲什麼不使用:'DateTime.Now'作爲參數。如果你想使用服務器時間,不要在那裏使用一個參數。使用'SYSDATETIME()'來代替,就像你以前一直在做的那樣。這是完全有效的。 – 2013-03-14 18:37:49

回答

0

我很確定你可以簡單地做到這一點:

dataAdapter.InsertCommand.CommandText = 
    "INSERT INTO Temas(Id,Level,Date,Description) (@Id,@Level,SYSDATETIME(),@Description)" 
+0

簡單但是正確,效果很好!謝謝! – 2013-03-14 18:57:54

0

你可以做

dataAdapter.InsertCommand.CommandText =「INSERT INTO Temas(ID,等級,日期,說明)(@身份證,@水平,SYSDATETIME(),@描述)」;

0

你可以試試嗎?我現在在我的手機上,所以這可能不是確切的答案,但你會得到它 -

dataAdapter.InsertCommand.CommandText = "INSERT INTO Temas(Id,Level,Date, Description) (@Id,@Level, SYSDATETIME(), @Description")";