c#通过for循环多次向数据库中插入数据。

c#通过for循环多次向数据库中插入数据。,第1张

你的问题不甚清晰。需要插入的数据来源是在窗体中吗?SQL需要拼接吗?

给你一段代码参考,这段代码是将窗体中dataGridView中的数据循环插入数据库,循环过程中拼接SQL,并执行插入:

//主方法,拼接SQL并执行插入

        private int InsertInTo()

        {

            StringBuilder sqlinsert = new StringBuilder()

            StringBuilder sqlvalue = new StringBuilder()

            sqlinsert.Append("  insert into  你的汪迹表名  (     ")

            sqlvalue.Append("  毁陵茄 values(")

            int num = 0//该变量用来获取插入多少条数据

            for (int i = 0 i < dataGridView1.Rows.Count i++)

            {

           纤察     for (int c = 0 c < dataGridView1.Columns.Count c++)

                {

                    sqlinsert.Append(dataGridView1.Columns[c].HeaderText + ",")//赋值列名

                    sqlvalue.Append("'" + dataGridView1.Rows[i].Cells[c].Value.ToString() + "'")//赋值列对应的值

                }

                string sql = sqlinsert.ToString().Substring(0, sqlinsert.Length - 1) + ")  " + sqlvalue.ToString().Substring(0, sqlvalue.Length - 1) + ")"//拼接完整插入SQL

                num += Insert(sql)//调用插入方法,并接收返回的插入行数

            }

            return num

        }

        //连接数据库并执行SQL

        private int  Insert(string sql)

        {

            string connstring = "server=127.0.0.1\\SQLEXPRESSdatabase=你的数据库名uid=用户名pwd=密码"

            SqlConnection conn = new SqlConnection(connstring)

            SqlCommand cmd = new SqlCommand(sql, conn)

            conn.Open()

            int n = cmd.ExecuteNonQuery()//执行

            conn.Close()

            cmd.Dispose()

            return n

        }

赋值列名时可以放在循环外只赋值一次。

1、配置ODBC数据源

2、使用SQL函数进行连接。

对于1、配置数据源,配置完以后就可以编程 *** 作数据库了悉袜。

对于2、使用SQL函数进行连接,参考代码如下:

#include<windows.h>

#include<sql.h>

#include<sqlext.h>

void main()

{

HENV henv //环境句柄

HDBC hdbc //数据源句柄

HSTMT hstmt //执行语句句柄

unsigned char datasource[]="数据源名称" //即源中设置的源名称

unsigned char user[]= "用户名" //数册郑据库的帐户名

unsigned char pwd[]= "密码" //数据库的密码

unsigned char search[]="select xm from stu where xh=0"

SQLRETURN retcode //记录各SQL函数的返回情况

// 分配环境句柄

retcode= SQLAllocEnv(&henv) // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL

, &henv)

// 设置ODBC环境版本号为3.0

retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0)

// 分配连接句柄

retcode= SQLAllocConnect(henv,&hdbc) // 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc)

//设置连接属性,登录超时为*rgbValue秒(可以没有)

// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0)

//直接连接数据源

// 如果是windows身份验证,第二、三参数可以是

,也可以是任何字串

//SQL_NTS 即 "

retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS )

//分配语句句柄

retcode= SQLAllocStmt(hdbc,&hstmt) // 等介于 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt)

//直接执行查询语句

retcode=SQLExecDirect(hstmt,search,SQL_NTS)

//将数据缓冲区绑定数据库中的相应字段(i是查询结果集列号,queryData是绑定缓冲区,BUFF_LENGTH是缓冲区长度)

SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0)

//遍历结果集到相应缓冲区 queryData

SQLFetch(hstmt)

/*

*对遍历结果的相关 *** 作,如显示等

*/

//注意释放顺序,州陆颂否则会造成未知错误!

SQLFreeHandle(SQL_HANDLE_STMT, hstmt)

SQLDisconnect(hdbc)

SQLFreeHandle(SQL_HANDLE_DBC, hdbc)

SQLFreeHandle(SQL_HANDLE_ENV, henv)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11976006.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存