日期:2014-05-18  浏览次数:20474 次

C#编程添加有GUID列的表至数据库
小弟最近在开发一个数据库程序,用的是VS2005和SQL2005,碰到这样的一个功能没法实现,希望有高手指教。
在数据库中建立了一个表LearnedPointTable,包含列{PointID,PointName,HorizontalAngle},其中PointID是用数据库的NEWID()方法自动生成的GUID。小弟在winform窗体上添加了一个datagridview,三个按钮。datagridviw用来现实表LearnedPointTable,三个按钮分别是“添加数据”、“删除数据”和“保存数据”。显示数据时没有使用数据绑定空间,直接用代码连接数据库,datagridview不现实表的第一列。显示功能我已经实现了,代码如下。
C# code

        private SqlDataAdapter sqlAdapter;
        private DataSet dataSet;
        private SqlConnection sqlConn = new SqlConnection("Server=.;uid=sa;pwd=1234;database=TDMSdataBase");
        private void AddPoints_Load(object sender, EventArgs e)
       {
            //查询数据库用的SQL语句
            string sqlCmd = "SELECT * FROM LearnedPointTable";
            // 创建数据集对象
            sqlAdapter = new SqlDataAdapter(sqlCmd, sqlConn);
            // 创建数据集对象
            dataSet = new DataSet("TDMSdataBase");
            // 填充数据集
            sqlAdapter.Fill(dataSet, "LearnedPointTable");
            LearnedPoints.DataSource = dataSet.Tables["LearnedPointTable"];
            LearnedPoints.Columns["PointID"].Visible = false;
            LearnedPoints.Columns["PointName"].HeaderText = "点名";
            LearnedPoints.Columns["PointName"].ReadOnly = false;
            LearnedPoints.Columns["HorizontalAngle"].HeaderText = "水平角";
            LearnedPoints.Columns["HorizontalAngle"].ReadOnly = true;
          
            sqlConn.Close();
       }


现在碰到的问题是,我用按钮“添加数据”添加一行字符串数组类型的{PointName,HorizontalAngle}(例如 {"X6","123.234"})到datagridview,报错“当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行。”
我非常想实现,通过添加按钮添加或删除datagridview的一行数据,通过保存按钮将最后结果保存到数据库。
如果直接在datatable中添加数据,就碰到GUID无法添加的问题了。
请各位兄弟姐妹帮帮小弟,在此感激不尽!

------解决方案--------------------
C# code

datatable中添加数据,就碰到GUID无法添加的问题了-->
GUID用GUID.NewGuid().ToString()