2016-12-05 4 views
0

Ich habe drei SäulenC# und SQL Server - mit einer gespeicherten Prozedur

Fraquence int 
[Prochain étalonnag] date  
[date étalonnage] type:date 

In Visual Studio, habe ich ein Formular für das Hinzufügen eines neuen (étalonnage) an meinen Tisch gibt der Benutzer zwei vules (Fraquence und date étalonnage).

Ich möchte dies mit einer gespeicherten Prozedur in SQL Server tun:

Prochain étalonnag = date étalonnage + (Month Fraquence). 

Die Säule Prochain étalonnage automatisch gefüllt wird, wenn der Benutzer klicken Sie auf Schaltfläche Add.

+1

Was Sie bisher versucht haben? Bitte geben Sie Beispielcode an - für weitere Informationen lesen Sie [So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) –

+0

Ich kenne diese Methode System.DateTime.Now.AddMonths () .ToShortDateString(); aber ich möchte nicht heute Datum und ich weiß nicht, wie ich in diesem Beispiel –

Antwort

0

Bitte überprüfen Sie folgende .NET-Code, leider ist es in VB.NET Aber es ist kein Problem, es zu C#

Die gespeicherte Prozedur in der Datenbank zu konvertieren prAddRow für diese Probe gestattet Es akzeptiert zwei Parameter @p_int und @p_date

Dim sqlConnBuilder As New SqlConnectionStringBuilder() 
sqlConnBuilder.DataSource = txtSQLServer.Text 
sqlConnBuilder.InitialCatalog = txtDatabase.Text 
sqlConnBuilder.IntegratedSecurity = True 

conn = New SqlConnection(sqlConnBuilder.ToString) 

Dim cmd As New SqlCommand("prAddRow") 
cmd.CommandType = CommandType.StoredProcedure 
cmd.Parameters.Add("@p_int", SqlDbType.Int).Value = 1 
cmd.Parameters.Add("@p_date", SqlDbType.Date).Value = Date.Now.Date 

conn.Open() 
cmd.Connection = conn 
Dim numberOfAffectedRows As Integer = cmd.ExecuteNonQuery() 
conn.Close() 

der T-SQL-Quellcodes für die Probe gespeicherte Prozedur wird wie folgt

create procedure prAddRow(
    @p_int int, 
    @p_date date 
) 
as 
insert into etalonnage (Fraquence , [date etalonnage]) values (@p_int, @p_date) 
go 

Hinweis: I gespeicherte Prozedur nach Marcs Notiz von sp_addRow

prAddRow

umbenannt Ich hoffe, dass es für Sie

+1

Seitliche Anmerkung: Sie sollten ** nicht ** das Präfix "sp_" für Ihre gespeicherten Prozeduren verwenden. Microsoft hat [dieses Präfix für seine eigene Verwendung reserviert (siehe * Gespeicherte Prozeduren benennen *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx), und Sie riskieren irgendwann in der Zukunft einen Namenskonflikt. [Es ist auch schlecht für die Leistung Ihrer gespeicherten Prozedur] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Es ist am besten, einfach 'sp_' zu vermeiden und etwas anderes als Präfix zu verwenden - oder gar kein Präfix! –

+0

Vielen Dank für die Warnung und Informationen zur Benennung gespeicherter Prozeduren – Eralper

+1

Eine andere Randnotiz: Verwenden Sie 'DateTime.Today' oder' Date.Today' anstelle von '.Now.Date' –

0
private void button1_Click(object sender, EventArgs e) 
    { 
     cmd = new SqlCommand("INSERTNEW", connection); 
     cmd.CommandType = CommandType.StoredProcedure; 
     SqlParameter [] par = new SqlParameter[4]; 
     par[0] = new SqlParameter("@COD", SqlDbType.VarChar, 50); 
     par[0].Value = textBox1.Text; 
     par[1] = new SqlParameter("@FERQ", SqlDbType.Int); 
     par[1].Value = numericUpDown1.TextAlign; 
     par[2] = new SqlParameter("@DATE_ET", SqlDbType.Date); 
     par[2].Value = dateTimePicker1.Text; 
     par[3] = new SqlParameter("@DATE_PROC", SqlDbType.Date); 
     DateTime d1 = Convert.ToDateTime(dateTimePicker1.Text); 
     int k =Convert.ToInt32(numericUpDown1.TextAlign); 
     string r = d1.AddMonths(k).ToShortDateString(); 
     par[3].Value = r ; 
     cmd.Parameters.AddRange(par); 
     connection.Open(); 
     cmd.ExecuteNonQuery(); 
     connection.Close(); 
     MessageBox.Show("good add"); 
    } 

nützlich ist dies dank der Arbeit aller

+0

Der Wert eines Date-Parameters sollte ein 'DateTime'-Wert sein , keine Schnur. Bei einer Zeichenfolge können Probleme auftreten, die nicht als gültiges Datum angesehen werden (z. B. wenn Sie dies auf einem Server veröffentlichen, der eine andere Kultur verwendet). –

+0

Aber ich benutze DateTimePicker so geben Benutzer immer Wert Formular Datum –

Verwandte Themen