none
C#代码问题 RRS feed

  • 问题

  • 我做的一个数据库jj内两表trr_card和trr_cc之间一些数据的交换,但是做好以后没有任何反应。下面是所有代码:有什么问题

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Data.SqlClient;
    using System.Diagnostics;

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            string str1;
            string str2;
            string str3;
            string str4;
            public Form1()
            {
                InitializeComponent();
            }
            private void jj_exchange_Click(object sender, EventArgs e)
            {
                if (UserID.Text != null)
                {
                    str2 = UserID.Text.ToString();
                }
                else
                {
                    str2 = "sa";
                }
                str1 = Password.Text.ToString();
                string str = "Data Source=(local);Initial Catalog=jj;User ID=sa;Password=111111";
                str3 = "select c_name,c_sex,dt_birthday,c_tele from trr_card";
                str4 = "delete trr_cc where 1=1";
                SqlConnection cn = new SqlConnection(str);
                SqlCommand cmd1 = new SqlCommand(str3, cn);
                SqlCommand cmd2 = new SqlCommand(str4, cn);
                SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
                SqlDataAdapter da2 = new SqlDataAdapter(cmd2);
                DataSet ds = new DataSet();
                da1.Fill(ds);
                da2.Fill(ds);
                for (int i = 0; i < ds.Tables["trr_card"].Rows.Count; i++)
                {
                    int _i = 100001 + i;
                    ds.Tables["trr_cc"].Rows[i]["c_cid"] = _i;
                    ds.Tables["trr_cc"].Rows[i]["c_name"] = ds.Tables["trr_card"].Rows[i]["c_name"];
                    ds.Tables["trr_cc"].Rows[i]["c_sex"] = ds.Tables["trr_card"].Rows[i]["c_sex"];
                    ds.Tables["trr_cc"].Rows[i]["dt_birth"] = ds.Tables["trr_card"].Rows[i]["dt_birthday"];
                    //ds2.Tables["trr_cc"].Rows[i]["c_org"] = ds1.Tables["trr_card"].Rows[i]["c_org"];
                    ds.Tables["trr_cc"].Rows[i]["c_tele"] = ds.Tables["trr_card"].Rows[i]["c_tele"];
                }  
                MessageBox.Show("完成了");
            }

            private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {
                Process.Start("http://wpa.qq.com/msgrd?v=3&uin=752682600&site=qq&menu=yes");
            }
        }
    }

    2011年12月20日 10:28

答案

  • 我做的一个数据库jj内两表trr_card和trr_cc之间一些数据的交换,但是做好以后没有任何反应。下面是所有代码:有什么问题

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Data.SqlClient;
    using System.Diagnostics;

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            string str1;
            string str2;
            string str3;
            string str4;
            public Form1()
            {
                InitializeComponent();
            }
            private void jj_exchange_Click(object sender, EventArgs e)
            {
                if (UserID.Text != null)
                {
                    str2 = UserID.Text.ToString();
                }
                else
                {
                    str2 = "sa";
                }
                str1 = Password.Text.ToString();
                string str = "Data Source=(local);Initial Catalog=jj;User ID=sa;Password=111111";
                str3 = "select c_name,c_sex,dt_birthday,c_tele from trr_card";
                str4 = "delete trr_cc where 1=1";
                SqlConnection cn = new SqlConnection(str);
                SqlCommand cmd1 = new SqlCommand(str3, cn);
                SqlCommand cmd2 = new SqlCommand(str4, cn);
                SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
                SqlDataAdapter da2 = new SqlDataAdapter(cmd2);
                DataSet ds = new DataSet();
                da1.Fill(ds);
                da2.Fill(ds);
                for (int i = 0; i < ds.Tables["trr_card"].Rows.Count; i++)
                {
                    int _i = 100001 + i;
                    ds.Tables["trr_cc"].Rows[i]["c_cid"] = _i;
                    ds.Tables["trr_cc"].Rows[i]["c_name"] = ds.Tables["trr_card"].Rows[i]["c_name"];
                    ds.Tables["trr_cc"].Rows[i]["c_sex"] = ds.Tables["trr_card"].Rows[i]["c_sex"];
                    ds.Tables["trr_cc"].Rows[i]["dt_birth"] = ds.Tables["trr_card"].Rows[i]["dt_birthday"];
                    //ds2.Tables["trr_cc"].Rows[i]["c_org"] = ds1.Tables["trr_card"].Rows[i]["c_org"];
                    ds.Tables["trr_cc"].Rows[i]["c_tele"] = ds.Tables["trr_card"].Rows[i]["c_tele"];
                }  
                MessageBox.Show("完成了");
            }

            private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {
                Process.Start("http://wpa.qq.com/msgrd?v=3&uin=752682600&site=qq&menu=yes");
            }
        }
    }


    看你的程序好像你想把循环中的内容存入数据库。关键原因,你缺少了Update语句,无法更新。

    我的看法:

    1)假设你两个表都有主键,那么先为那个要被更新的表使用SqlCommandBuilder自动生成增删改查的语句。

    2)同时用两个SqlDataAdapter的Fill方法获取数据到两个不同的DataTable中。

    3)循环更新trr_cc的DataTable。

    4)最后调用SqlDataAdapter.Update(trr_cc)即可。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年12月21日 3:12
    版主

全部回复

  • 您的 jj_exchange_Click 之中,並沒有將資料實際存到DB之中,只有在DataTable之中的資料交換而已!

    請問您的問題是說,在DB中沒有實際的反應嗎?


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2011年12月20日 14:42
  • 我做的一个数据库jj内两表trr_card和trr_cc之间一些数据的交换,但是做好以后没有任何反应。下面是所有代码:有什么问题

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Data.SqlClient;
    using System.Diagnostics;

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            string str1;
            string str2;
            string str3;
            string str4;
            public Form1()
            {
                InitializeComponent();
            }
            private void jj_exchange_Click(object sender, EventArgs e)
            {
                if (UserID.Text != null)
                {
                    str2 = UserID.Text.ToString();
                }
                else
                {
                    str2 = "sa";
                }
                str1 = Password.Text.ToString();
                string str = "Data Source=(local);Initial Catalog=jj;User ID=sa;Password=111111";
                str3 = "select c_name,c_sex,dt_birthday,c_tele from trr_card";
                str4 = "delete trr_cc where 1=1";
                SqlConnection cn = new SqlConnection(str);
                SqlCommand cmd1 = new SqlCommand(str3, cn);
                SqlCommand cmd2 = new SqlCommand(str4, cn);
                SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
                SqlDataAdapter da2 = new SqlDataAdapter(cmd2);
                DataSet ds = new DataSet();
                da1.Fill(ds);
                da2.Fill(ds);
                for (int i = 0; i < ds.Tables["trr_card"].Rows.Count; i++)
                {
                    int _i = 100001 + i;
                    ds.Tables["trr_cc"].Rows[i]["c_cid"] = _i;
                    ds.Tables["trr_cc"].Rows[i]["c_name"] = ds.Tables["trr_card"].Rows[i]["c_name"];
                    ds.Tables["trr_cc"].Rows[i]["c_sex"] = ds.Tables["trr_card"].Rows[i]["c_sex"];
                    ds.Tables["trr_cc"].Rows[i]["dt_birth"] = ds.Tables["trr_card"].Rows[i]["dt_birthday"];
                    //ds2.Tables["trr_cc"].Rows[i]["c_org"] = ds1.Tables["trr_card"].Rows[i]["c_org"];
                    ds.Tables["trr_cc"].Rows[i]["c_tele"] = ds.Tables["trr_card"].Rows[i]["c_tele"];
                }  
                MessageBox.Show("完成了");
            }

            private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {
                Process.Start("http://wpa.qq.com/msgrd?v=3&uin=752682600&site=qq&menu=yes");
            }
        }
    }


    看你的程序好像你想把循环中的内容存入数据库。关键原因,你缺少了Update语句,无法更新。

    我的看法:

    1)假设你两个表都有主键,那么先为那个要被更新的表使用SqlCommandBuilder自动生成增删改查的语句。

    2)同时用两个SqlDataAdapter的Fill方法获取数据到两个不同的DataTable中。

    3)循环更新trr_cc的DataTable。

    4)最后调用SqlDataAdapter.Update(trr_cc)即可。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年12月21日 3:12
    版主
  • Hi shuaishuaicui,

    欢迎来到MSDN论坛!

    如前面两位朋友所说,您并没有将更改后的数据更新到数据库中.

    请您参照Wei_Dong的建议来解决该问题.

    如果您还有任何问题,请您告诉我们.

    谢谢.

    Yoyo.

     


    Yoyo Jiang[MSFT]
    MSDN Community Support | Feedback to us
    2011年12月22日 7:53
    版主