簡體   English   中英

使用C#將記錄添加到數據庫

[英]Adding a record to the database using C#

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

namespace lab1
{
    public partial class Form1 : Form
{

    DataSet ds = new DataSet(); //holding place in memory
    SqlDataAdapter daParent = new SqlDataAdapter();
    SqlDataAdapter daChild = new SqlDataAdapter();
    SqlConnection cs = new SqlConnection("Data Source=user-PC\\SQLEXPRESS; Initial Catalog=dede;Integrated Security=TRUE");

    BindingSource ParentBS = new BindingSource();
    BindingSource ChildBS = new BindingSource();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        SqlCommand slctParent = new SqlCommand("select * from Developerss", cs); //select statement
        daParent.SelectCommand = slctParent; // attaching sql command into the select command property of the data adapter Parent
        daParent.Fill(ds, "Developerss"); //fullfilling the data set, calling the table Parent

        SqlCommand slctChild = new SqlCommand("select * from Games", cs);
        daParent.SelectCommand = slctChild; 
        daParent.Fill(ds,"Games");

        dgParent.DataSource = ds.Tables["Developerss"];
        dgChild.DataSource = ds.Tables["Games"];
        dgParent.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        dgChild.SelectionMode = DataGridViewSelectionMode.FullRowSelect;//click anywhere in the table we have the whole row selected

        ParentBS.DataSource = ds.Tables[0];
        ChildBS.DataSource = ds.Tables[1];

        textId.DataBindings.Add(new Binding("Text",ChildBS,"game_id"));
        textName.DataBindings.Add(new Binding("Text", ChildBS, "game_name"));
        textPlatform.DataBindings.Add(new Binding("Text", ChildBS, "game_platform"));
        textDeveloperId.DataBindings.Add(new Binding("Text", ParentBS, "d_id"));


    }

    private void dgParent_SelectionChanged(object sender, EventArgs e)
    {
        ds.Tables["Games"].DefaultView.RowFilter = "developer_id = " + dgParent.CurrentRow.Cells["d_id"].Value;
        //whenever the selection change on the dgparent use the value of the current row that we're on
        dgChild.DataSource = ds.Tables["Games"];
    }

    private void addBtn_Click(object sender, EventArgs e)
    {
        daChild.InsertCommand = new SqlCommand("insert into Games values @id, @name, @platform, @developerId", cs);
        daChild.InsertCommand.Parameters.Add("@id", SqlDbType.Int).Value = textId.Text;
        daChild.InsertCommand.Parameters.Add("@name", SqlDbType.VarChar).Value = textName.Text;
        daChild.InsertCommand.Parameters.Add("@platform", SqlDbType.VarChar).Value = textPlatform.Text;
        daChild.InsertCommand.Parameters.Add("@developerId", SqlDbType.Int).Value = ds.Tables[0].Rows[ParentBS.Position][0];

        cs.Open();
        daChild.InsertCommand.ExecuteNonQuery();
        cs.Close();

    }

你好!

我的insert命令有問題。 我收到以下錯誤:

'game_id'附近的語法不正確。

是的,該列存在於數據庫中。 我的更新功能遇到相同的錯誤,但我沒有在此發布,因為我認為它必須來自相同的錯誤源。 我有2個數據網格,一個是父級,另一個是子級。 基本上我想在子表中添加新記錄。

先感謝您 !

您的INSERT語法完全錯誤-您應該使用:

INSERT INTO dbo.Games(Co1, Col2, ..., ColN)
VALUES (@id, @name, @platform, @developerId)

首先:我建議始終明確指定要插入的列列表

其次: VALUES需要在要插入的值列表周圍有括號

下一次- 請首先查看出色的免費 SQL Server文檔! 完全可以在網上輕松找到這樣的基本內容-例如, 可以在Technet上找到有關INSERT語法的詳細信息

該文檔非常詳盡,它顯示了所有詳細信息,所有選項,使用它的各種方式,並且還包含大量示例代碼- 請在使用之前先問該文檔,然后再問這些基本問題(使用文檔並查找)。畢竟,這是成為開發人員的一部分 !)-謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM