Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C如何将datagridview中的某些列datetime更新到数据库_C#_Sql Server_Datagridview_Updates - Fatal编程技术网

C# C如何将datagridview中的某些列datetime更新到数据库

C# C如何将datagridview中的某些列datetime更新到数据库,c#,sql-server,datagridview,updates,C#,Sql Server,Datagridview,Updates,我需要将datagridview中的某些列更新到数据库。但不要更新到数据库 第一步:我从datetimepicker中选择datetime 第二步:在datagridview上显示日期时间 步骤树:我需要更新/编辑数据库的datagridview 显示在Datagridview上 我需要将字段更新到数据库 代码 此代码未保存到数据库 谢谢你抽出时间D 类型数据库: ChkIn和ChkDate类型DateTime,EmpNo类型NUMERIC 我试着 错误:从字符串转换日期和/或时间时,转换失败。

我需要将datagridview中的某些列更新到数据库。但不要更新到数据库

第一步:我从datetimepicker中选择datetime

第二步:在datagridview上显示日期时间

步骤树:我需要更新/编辑数据库的datagridview

显示在Datagridview上

我需要将字段更新到数据库

代码

此代码未保存到数据库

谢谢你抽出时间D 类型数据库:

ChkIn和ChkDate类型DateTime,EmpNo类型NUMERIC

我试着


错误:从字符串转换日期和/或时间时,转换失败。T\uuu T

您可以尝试直接使用SqlCommand摆脱SqlDataAdapter

Using(Conn = new SqlConnection(appConn))
{
    Conn.Open();

    string sql = "UPDATE [WebSP].[dbo].[filesTA] " + 
                 "SET [filesTA].ChkIn = replace(convert(nvarchar(10),@cIn,102),'.',':') " + 
                 "FROM [WebSP].[dbo].[filesTA] " +
                 "WHERE [filesTA].ChkDate = @cDate and [filesTA].EmpNo = @eNo";
    SqlCommand cmd = new SqlCommand(sql, Conn);
    cmd.Parameters.Add("@cIn", SqlDbType.NVarChar, 10, "ChkIn").Value = 
                               dgvShow.Rows[i].Cells[3].Value;
    cmd.Parameters.Add("@cDate", SqlDbType.NVarChar, 10, "ChkDate").Value = 
                                 dateTimePicker.Value.ToString("yyyy-MM-dd") ;
    cmd.Parameters.Add("@eNo", SqlDbType.NVarChar, 10, "EmpNo").Value = 
                                 dgvShow.Rows[i].Cells[0].Value ;
    cmd.ExecuteNonQuery();
}
当然,在使用参数时,我们需要在运行命令之前设置它们的值

但是我真的不太理解更新ChkIn字段的代码。根据参数类型,该字段是nvarchar,那么为什么不尝试在代码中直接格式化@cIn值,并避免使用Sql Server替换和转换函数呢?此外,102是一个。它用于使用yy.mm.dddddd模式将日期表达式格式化为字符串,但您有一个仅包含时间信息的字符串

比如说

上次编辑后-更改为此


此外,查询中使用的语法可能是其他问题的根源,但我需要查看您的连接字符串。

请在编译iti时显示sql字符串的值。尝试错误:从字符串转换日期和/或时间时转换失败。我正在编辑TOPAnswer上的主题外观更新。现在可以为数据库中的列指定不同的类型。现在传递两个datetime和一个十进制数。不要尝试将所有内容转换为字符串。
SqlConnection Conn;
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da;
DataTable dt = new DataTable();
DataSet ds = new DataSet();
StringBuilder sb = new StringBuilder();


string appConn = ConfigurationManager.ConnectionStrings["connDB"].ConnectionString;

int i;

    for (i = 1; i < dgvShow.Rows.Count; i++)
    {
        if (dgvShow.Rows.Count > 0)
        {
            SqlConnection conn = new SqlConnection(appConn);
            string sql = "UPDATE [WebSP].[dbo].[filesTA]"
            + "SET [filesTA].ChkIn = replace(convert(nvarchar(10),'" + dgvShow.Rows[i].Cells[3].Value + "',102),'.',':')"
            + "FROM [WebSP].[dbo].[filesTA]"
            + "WHERE [filesTA].ChkDate = '" + dateTimePicker.Value.ToString("yyyy-MM-dd") + "' and [filesTA].EmpNo = '" + dgvShow.Rows[i].Cells[0].Value + "'";

            da = new SqlDataAdapter(sql, Conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            Conn.Close();

            dgvShow.DataSource = ds;
            da.Update(ds);
        }
    }
Conn = new SqlConnection();
            if (Conn.State == ConnectionState.Open)
            {
                Conn.Close();
            }
            Conn.ConnectionString = appConn;
            Conn.Open();

SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM [filesTA]", appConn);
            adapter.UpdateCommand = new SqlCommand("UPDATE [WebSP].[dbo].[filesTA]"
            + "SET [filesTA].ChkIn = replace(convert(nvarchar(10),@cIn,102),'.',':')"
            + "FROM [WebSP].[dbo].[filesTA]"
            + "WHERE [filesTA].ChkDate = @cDate and [filesTA].EmpNo = @eNo", Conn);

            adapter.UpdateCommand.Parameters.Add("@cIn", SqlDbType.NVarChar, 10, "ChkIn");
            adapter.UpdateCommand.Parameters.Add("@cDate", SqlDbType.NVarChar, 10, "ChkDate");
            adapter.UpdateCommand.Parameters.Add("@eNo", SqlDbType.NVarChar, 10, "EmpNo");

            DataSet ds = new DataSet();
            adapter.Fill(ds);

            dgvShow.DataSource = ds;
            adapter.Update(ds);
int i;
            for (i = 1; i < dgvShow.Rows.Count; i++)
            {
                if (dgvShow.Rows.Count > 0)
                {
                    using (Conn = new SqlConnection(appConn))
                    {
                        Conn.Open();

                        string sql = "UPDATE [WebSP].[dbo].[filesTA]" +
                                     "SET [filesTA].ChkIn = replace(convert(nvarchar(10),@cIn,102),'.',':')" +
                                     "FROM [WebSP].[dbo].[filesTA]" +
                                     "WHERE [filesTA].ChkDate = @cDate and [filesTA].EmpNo = @eNo";
                        SqlCommand cmd = new SqlCommand(sql, Conn);
                        cmd.Parameters.Add("@cIn", SqlDbType.DateTime, 10, "ChkIn").Value = Convert.ToDateTime(dgvShow.Rows[i].Cells[3].Value).ToString();
                        cmd.Parameters.Add("@cDate", SqlDbType.DateTime, 10, "ChkDate").Value = Convert.ToDateTime(dateTimePicker.Value.ToString()).ToString();
                        cmd.Parameters.Add("@eNo", SqlDbType.Decimal, 10, "EmpNo").Value = Convert.ToDecimal(dgvShow.Rows[i].Cells[0].Value).ToString();
                        cmd.ExecuteNonQuery();
                    }



                }
            }
Using(Conn = new SqlConnection(appConn))
{
    Conn.Open();

    string sql = "UPDATE [WebSP].[dbo].[filesTA] " + 
                 "SET [filesTA].ChkIn = replace(convert(nvarchar(10),@cIn,102),'.',':') " + 
                 "FROM [WebSP].[dbo].[filesTA] " +
                 "WHERE [filesTA].ChkDate = @cDate and [filesTA].EmpNo = @eNo";
    SqlCommand cmd = new SqlCommand(sql, Conn);
    cmd.Parameters.Add("@cIn", SqlDbType.NVarChar, 10, "ChkIn").Value = 
                               dgvShow.Rows[i].Cells[3].Value;
    cmd.Parameters.Add("@cDate", SqlDbType.NVarChar, 10, "ChkDate").Value = 
                                 dateTimePicker.Value.ToString("yyyy-MM-dd") ;
    cmd.Parameters.Add("@eNo", SqlDbType.NVarChar, 10, "EmpNo").Value = 
                                 dgvShow.Rows[i].Cells[0].Value ;
    cmd.ExecuteNonQuery();
}
DateTime chkIN = Convert.ToDateTime(dgvShow.Rows[i].Cells[3].Value);
DateTime chkDate = Convert.ToDateTime(dateTimePicker.Value.ToString("yyyy-MM-dd"));
decimal empNo = Convert.ToDecimal(dgvShow.Rows[i].Cells[0].Value) ;


cmd.Parameters.Add("@cIn", SqlDbType.DateTime).Value = chkIN;
cmd.Parameters.Add("@cDate", SqlDbType.DateTime).Value = chkDate;
cmd.Parameters.Add("@eNo", SqlDbType.Decimal).Value = empNo;