2011-02-28 5 views
1

sqlite에서 eric4 (qtdesigner, pyqt, python 등)를 사용하고 있으며 실행 중일 때 "오류 바인딩 매개 변수 0 - 아마도 지원되지 않는 유형"이 계속 표시됩니다. 내가 코딩 한 프로그램.계속 "오류 바인딩 매개 변수 0 - 아마도 지원되지 않는 유형"

저는 eric4 + qtdesigner를 사용하여 일부 GUI를 만들고 대화 코드를 생성했습니다. qtdesigner에서 만든 창 버튼 중 하나를 누르면 데이터베이스에 액세스 한 다음 데이터베이스에 정보를 저장하고 저장합니다. 필자는 데이터베이스에 액세스하고 저장하기 위해 별도의 py 파일을 만들었습니다.

다음은 내가 계속 오류를 범할 수있는 소스 코드입니다.

import sqlite3 
import datetime, time 

con = sqlite3.connect("Members.db") #access database 
cur = con.cursor() #cursor object for database 


class NewMem: 
    def input_data(self, Nik, NFirst, NMid, NLast, BMon, BDay, BYear, CNum, EM, MAd): 

     def adapt_datetime(ts): 
      return time.mktime(ts.timetuple()) 

     #Get current time and date 
     sqlite3.register_adapter(datetime.datetime, adapt_datetime) 
     now = datetime.datetime.now() 

     #created if first time to make a table 
     try: 
      cur.execute('create table Members (ID integer primary key autoincrement not null, Nick string not null, NameFirst string, NameMiddle string, NameLast string, BirthMonth string, BirthDay string, BirthYear string, ContactNum string, EMail string, MailAdd string, MemberSince string)') 
     except: 
      pass 

     cur.execute("insert into Members (Nick,NameFirst,NameMiddle,NameLast,BirthMonth,BirthDay,BirthYear,ContactNum,EMail,MailAdd,MemberSince) values (?,?,?,?,?,?,?,?,?,?,?)",(Nik, NFirst, NMid, NLast, BMon, BDay, BYear, CNum, EM, MAd, now)) 

     con.commit() 
     cur.close() 
     con.close() 

: 별도의 평 파일에

def on_button_Save_released(self): 
     """ 
     Slot documentation goes here. 
     """ 
     # TODO: not implemented yet 
     Nik = self.LineEdit_Nickname.text() 
     NFirst = self.LineEdit_NameFirst.text() 
     NMid = self.LineEdit_NameMiddle.text() 
     NLast = self.LineEdit_NameLast.text() 
     BMon = self.ComboBox_BirthMonth.currentText() 
     BDay = self.ComboBox_BirthDay.currentText() 
     BYear = self.ComboBox_BirthYear.currentText() 
     CNum = self.LineEdit_ContactNum.text() 
     EM = self.LineEdit_EMail.text() 
     MAd = self.LineEdit_MailAdd.text() 

     self.NMem = NewMem() 
     self.NMem.input_data(Nik, NFirst, NMid, NLast, BMon, BDay, BYear, CNum, EM, MAd) 

그리고이 데이터베이스에 액세스하고 쓰기 :

에서 (나는 별도의 평 파일을 수입하는)는 UI의 대화 상자를 생성 Google에서 일부 검색을 인용 부호로 볼 수 있습니까? 매개 변수를 확인했지만 올바른 것으로 보입니다. 또한 문자지도 (UTF?)와 관련이있는 어딘가 읽었지만 정직하게 확인하는 방법을 모르겠습니다 ... 입력 한 올바른 데이터가 표시되는지 확인하기 위해 인쇄본을 추가했습니다. 그들은 정확합니다. 그래서 나는 아직도 오류가 발생하는 이유를 꽤나 잘 모르고 있습니다.

어떤 도움

이 많은 활을 감사하는 것은 깊이

답변

3

QlineEdit.text()QString 반환합니다. 사용 가능한 무언가를 얻으려면 unicode 생성자로 전달하십시오.

+0

감사합니다. 방금 "Nik = unicode (self.LineEdit_Nickname.text())"와 같은 인스턴스를 만들었고 오류가 사라졌습니다. 'D – hyoumoku

1

나는 이것을 재현 할 수있었습니다.

문자열이나 숫자 또는 심지어 날짜를 Nik으로 전달하면 모든 것이 작동합니다. 설명하는 오류는 Nik과 같은 이상한 것을 전달한 경우에만 발생합니다. 클래스 또는 함수.

input_data의 호출이 올바른 Nik인지 확인하십시오. 아마도 ()은 어딘가에서 잊혀 지므로 인스턴스 나 함수의 결과 대신 클래스 나 함수가 전달됩니다.

+0

고마워요! 흠 ... 비록 그것이 유니 코드 생성자가 누락되었다고 믿었지만,()가 경우에 누락 된 경우가 있는지 계속 확인합니다. 감사합니다 : D – hyoumoku

+1

대답은이 모든 설명 : QString 문자열 규칙에 의해 재생되지 않습니다. – 9000

관련 문제